我想做的是使用 Python GAE 读取一些 PEM 公钥。
RSAKey 模块不解析 PEM 格式的公钥,只是私有的。
如果我可以从 PEM 获得模数和指数,我可以从那里开始。
使用 openssl asn1parse 探索典型的 PEM(我将使用的那种),我可以找到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
如果我然后采用相同的 PEM 并在 Python 中将其粘贴到bytes
中,我如何让正确的孩子获得这些值?
asn1 = ASN1Parser(bytes)
modulus = asn1.getChild(1).getChild(0).value
exponent = asn1.getChild(1).getChild(1).value
binascii.hexlify(modulus)
要不然是啥?我无法弄清楚我需要看什么级别等。我也不知道我在做什么...使用 hexlify 我可以看到其中的值,但总是(和孩子一起玩,和深度)前面有额外的东西,和/或不是所示的完整数字在openssl中。