我想要做的是使用Python GAE讀取一些PEM公鑰。如何使用Python gdata.tlslite.utils.ASN1Parser獲取指數和模數?
RSAKey模塊不解析PEM格式的公鑰,只是私有的。
如果我能從PEM中得到模量和指數,我可以從那裏去。
探索一個典型的PEM(我將使用的)與openssl asn1parse我可以找到他們住的地方BIT STRING
。
但我不知道如何使用gdata ASN1Parser找到它們。
例如OpenSSL的輸出:
openssl asn1parse -i -in test.pem
0:d=0 hl=3 l= 159 cons: SEQUENCE
3:d=1 hl=2 l= 13 cons: SEQUENCE
5:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption
16:d=2 hl=2 l= 0 prim: NULL
18:d=1 hl=3 l= 141 prim: BIT STRING
然後深挖我可以看到RSA模數和指數:
openssl asn1parse -strparse 18 -i -in test.pem
0:d=0 hl=3 l= 137 cons: SEQUENCE
3:d=1 hl=3 l= 129 prim: INTEGER :09C7A8007111B2B...
135:d=1 hl=2 l= 3 prim: INTEGER :010001
如果我再取此相同的質子交換膜,並在Python它貼到bytes
,我如何獲得正確的孩子來獲得這些價值?
asn1 = ASN1Parser(bytes)
modulus = asn1.getChild(1).getChild(0).value
exponent = asn1.getChild(1).getChild(1).value
binascii.hexlify(modulus)
還是什麼?我無法弄清楚我需要看什麼水平等。我也不知道自己在做什麼...使用hexlify,我可以看到那裏的值,但總是(帶着孩子和深度玩耍)前面有額外的東西,和/或不是如圖所示的完整數字在openssl中。