在OpenSSL中读取没有封装头的Base64私钥

时间:2017-03-21 12:06:36

标签: encryption openssl cryptography rsa

我正在尝试使用openssl的私钥解密消息。当我使用以下格式的私钥时,我的实现工作正常

function INSTR_SPACE(str varchar2) return number as
       pos number(4, 0) := 0;
    begin
       pos := INSTR(str, ' ');
       if (pos = 0) then
          return to_number(length(str));
       else
          return pos;
       end if;
    end INSTR_SPACE;

当我尝试使用没有封装标头(-----BEGIN RSA PRIVATE KEY----- MIICXgIBAAKBgQDDEOX/tFJZrgR0dtTN2/jgPAJjWKE68aw8ayYaGn9fo1sJAE3C uH6Ym3hu775Enfd5DhtJ38g8RCFLzGVP/LW6n4+LsKS5HRZTGcDkpME0sVoLHLZd w8z4xZe5h+lT0jwkap5BNyHJCSddipxzjQIEtW+w8V6BkKkFw6UYN1Xn5QIDAQAB AoGAUeS0Ssfvksrl/+crrElfkPRgpEi/V7nCb5Mkae0Z8JLqUzsXalp+e585zolE PhZ7oQz1E+ypafPIbsQe/JfByx3itUk7J8+bZO4TpE8n5Afz8EdZLIqJU11MoafH mWYYWsoMdymgxasuu0ygyeswP42/aw1M+qQgoWBSoPtgLrkCQQDsygWQRI868JKJ OXzeKV6HTKjGXg37Zm050UaPk2a8inGk6F5RqH1+IZ4istrlcJTpJTuQCsVHJ+SQ nLveL09vAkEA0uRPeSdXbi92AR/5fj2Xh2APerYjRgK11nh4QEiqbmKyNdW7r9zb tIQiL9f4AXvcwIVnSWVgiTCwWOa9w8lT6wJBAOMlWPjwC8YqiSeCMjqbzMZVz4Gb MCZ+N0FDdEC+0csDs8jR78i9rMSWUzBOCpYWzYJp6R1gd6auqh/feojFMZkCQQCO Gkly2Y+QL2rUVzdGWTpBffjwNsqN4kWkvohIyK4Os3Jh1CMj3S4t9NsUYfI7Dbsx /rIaQrVJvAUX4mL8Ci0BAkEAuAZBSTmd7MQybVlWCP1AVvlMyW1CV/Mts4tLsGO5 NRMuXY0CrQaO69MW4nuHCSmshBcNB7ahGxYYYMaHmem3QQ -----END RSA PRIVATE KEY----- -----BEGIN RSA PRIVATE KEY-----)的相同密钥时,它会失败。

这些标题对于密钥是否必需?

如果我想使用没有标题的密钥,我应该使用OpenSSL的API吗?

1 个答案:

答案 0 :(得分:0)

密钥格式的类型由PEM编码密钥的页眉和页脚定义。在内部它只是一个PKCS#1私钥。有关格式的详细信息,请查看this Q/A或ASN.1解码密钥here

因此,尽管所有信息都在基础64中,但实现中间的实现可能无法直接解析它,主要是因为结构的类型未知。

然而,您可以对其进行64位解码并将其用作OpenSSL中的密钥。在这种情况下,您可能需要指定-inform DER或类似内容。