如何将RSA密钥整数转换为可用/ PKCS格式?

时间:2016-06-06 17:59:39

标签: python cryptography rsa

我设法生成了自己的素数,p和q,以及其他相关的RSA值,n,e和d。这些都只是整数...我还没有找到任何方法将它们转换/编码为顶部有BEGIN PRIVATE KEY或BEGIN PUBLIC KEY的常用格式。有没有办法在python中实现这个通用密钥格式?

1 个答案:

答案 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----'

参考文献: