我设法生成了自己的素数,p和q,以及其他相关的RSA值,n,e和d。这些都只是整数...我还没有找到任何方法将它们转换/编码为顶部有BEGIN PRIVATE KEY或BEGIN PUBLIC KEY的常用格式。有没有办法在python中实现这个通用密钥格式?
答案 0 :(得分:2)
我设法生成了我自己的素数,p和q,以及其他相关的RSA值,n,e和d。
然后,您可以创建一个包含此信息的pyCrypto密钥对象:
>>> from Crypto.PublicKey import RSA
>>> privateKey = RSA.construct((n, e, d))
>>> publicKey = RSA.construct((n, e))
之后,您可以将密钥导出为PKCS#1格式的文本表示(PEM):
>>> privateKey.exportKey()
'-----BEGIN RSA PRIVATE KEY-----\nMI....==\n-----END RSA PRIVATE KEY----'
>>> publicKey.exportKey()
'-----BEGIN PUBLIC KEY-----\nMI....==\n-----END PUBLIC KEY----'
或PKCS#8格式:
>>> privateKey.exportKey(pkcs=8)
'-----BEGIN PRIVATE KEY-----\nMI....==\n-----END PRIVATE KEY----'
>>> publicKey.exportKey(pkcs=8)
'-----BEGIN PUBLIC KEY-----\nMI....==\n-----END PUBLIC KEY----'
参考文献: