Openssl

如何從 SubjectPublicKeyInfo 格式的 .der 文件中提取公鑰?

  • May 22, 2018

我有一個似乎採用SubjectPublicKeyInfo格式的公鑰。我說“出現”是因為我對這個密鑰的唯一了解是它載入一個 Java 應用程序X509EncodedKeySpec,根據文件,它用於載入SubjectPublicKeyInfo格式的密鑰。

我一直無法openssl使用pkcs8x509或解析文件asn1parse

下面是 asn1 解析的結果:

openssl asn1parse -in public_key.der -inform der

0:d=0  hl=4 l= 290 cons: SEQUENCE          
4:d=1  hl=2 l=  13 cons: SEQUENCE          
6:d=2  hl=2 l=   9 prim: OBJECT            :rsaEncryption
17:d=2  hl=2 l=   0 prim: NULL              
19:d=1  hl=4 l= 271 prim: BIT STRING        

基於該輸出,我嘗試通過嘗試不同的偏移量和長度來提取實際密鑰,然後將其保存到 .der 文件中:

openssl asn1parse -in public_key.der -inform der -offset <> -length <l> -out public_key.der

然後我會將輸出回饋給openssl

openssl pkcs8 -inform DER -nocrypt -in public_key.der

但不斷收到同樣的錯誤:

Error decrypting key 140436029183664:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1338: 140436029183664:error:0D06C03A:asn1 encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 error:tasn_dec.c:852: 140436029183664:error: 0D08303A:asn1 編碼常式:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 錯誤:tasn_dec.c:772:F​​ield=version, Type=PKCS8_PRIV_KEY_INFO

更新:輸出

openssl asn1parse -in public_key.der -inform der -strparse 19

0:d=0  hl=4 l= 266 cons: SEQUENCE          
4:d=1  hl=4 l= 257 prim: INTEGER           :F19011E8903CFE79920F5D06CBF6B57593038DBDDEFEF30C796287264100DC930E2F5F2C7CFBAA84C0212228288D76B97EC7FC1FF6409770292386B5EFC15C3AF999F6FED14EA1D3419EB87F8188E1D21358F95EEA4642716A298A23CE6F98E03DE8D56A4101F39983F4444A3924BBD49A9C721BE5F4637EF09ACE0486C065433CA9B3353D6852364EC4211BEFC24AFD0CB7BFD2ECAE0D0F8B48BE7E7CBE336ABED9A7C0E0B6D468D4D6E6C05FA1680BB2BD7E8DA6FE201BAFDD6B30CF3A7381BCC47DC7F8B4F52715C052DEF3EB361064B2AD8523E6C186B59A320DC7DFE092FD2D668AD5516EAE25103FD66DA579E097D10A4ACAAFF3B9CA528448B2A625FF
265:d=1  hl=2 l=   3 prim: INTEGER           :010001

文件SubjectPublicKeyInfo可以與openssl rsa -pubin -inform der|pem -file inputfile -modulus.

如果是二進制,則使用der,如果是 base64 編碼,則使用pem.

引用自:https://serverfault.com/questions/911823