2017-03-21 7 views
0

私はopensslで秘密鍵を使用してメッセージを復号化しようとしています。私はそれが失敗しているencapsullationヘッダ(-----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----)なしで同じキーでしようとすると、私は次の形式OpenSSLにカプセル化ヘッダーのないBase64秘密鍵を読み取る

-----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----- 

に秘密鍵を使用するときに私の実装が正常に動作します。

これらのヘッダーはキーに必須ですか?

OpenSSLのAPIを使用する必要があるヘッダーがないキーを使用する場合は、

+0

同様に使いやすいAPIはありません。なぜこれが問題なのですか?ヘッダーとフッターを追加または削除するのは簡単です。 –

+0

これは問題ではありません。私の顧客はヘッダーなしでキーを入力します。私はどのAPIでもRSA構造を構築しようとしています。私はヘッダーとフッターを含めるstrcat()を行うことができます。しかし、これは少しハードコードされているように見えます。これは代替をチェックする理由です –

+1

[opensslを使用したRSA秘密鍵の生成方法](http://stackoverflow.com/a/30493975/608639)を参照してください。 。その欠点は、そのPEMがエンコードされている場合は、カプセル化ヘッダーが必要なことです。ヘッダーが必要ない場合は、ASN.1/DERを使用します。あなたはやや穏やかな中間地帯です - あなたはBase64でASN.1/BERをエンコードしたいと思っています。通常、PEMを使用します。しかし、ヘッダー、Base64のデコードを忘れてしまったら、 'd2i_RSAPrivateKey_bio'を使ってそれを読んでください。 – jww

答えて

0

キー形式の種類は、PEMでエンコードされたキーのヘッダーとフッターによって定義されます。内部的にはPKCS#1の秘密鍵です。形式の詳細については、this Q/AまたはASN.1で解読されたキーhereを参照してください。

したがって、すべての情報は、主に構造の型がわかっていないため、中間の実装ではベース64エンコーディングに含まれていますが、直接解析できないことがあります。

ただし、64ビットをデコードしてOpenSSL内のキーとして使用できます。その場合には、-inform DERなどを指定する必要があります。

関連する問題