我正在使用 RSA 在 Python 中加密/解密我的会话密钥。我正在使用 Pycrypto 库。生成密钥对后,我想从生成的密钥中提取私钥和公钥并将它们存储在不同的文件中。我怎样才能做到这一点?我可以看到 has Private 方法,它可以告诉生成的密钥对具有私有组件,但无法找到如何从生成的密钥对中提取两个密钥。任何建议都会有很大帮助。
问问题
23502 次
1 回答
41
如果您想从密钥中获取不同的部分,则有key
以下属性:
>>> from Crypto.PublicKey import RSA
>>> RSAkey = RSA.generate(1024)
>>> getattr(RSAkey.key, 'n')
13773...L
>>> getattr(RSAkey.key, 'p')
11731...L
>>> getattr(RSAkey.key, 'q')
11740...L
可用的组件是'n'、'e'、'd'、'p'、'q'、'u'
如果您只想将其保存在 PEM 中,则应使用exportKey()
方法(自 2.2 起可用)
>>> private = RSA.generate(1024)
>>> public = private.publickey()
>>> private.exportKey()
'-----BEGIN RSA PRIVATE KEY-----\nMIICXgIBAAKBgQDo1M0P3nryaF8ZITv8vCFVnjUJ1mnIsrqXZRTzjin69xepr3cz\nKicG3EYSUqMODQAsvMj0tGMo+ElGOVOkPFLVVBHd8izgA/E1RqUzbUDMj4WnhlhA\nQq7tNaViOXNaZ7krJZHabZKxfYvLAQtm4tr+m5NtXPBaWvjwhd5M9xvktwIDAQAB\nAoGBANVsS1Rikbymo5V7e2teYAgFb4THAEyyWIvyYlQnWp/r48rtRoyl9QQ64hhl\nm4WDsUdQ/bwhpkul3DT804jWqu2V71p68rQP7h5D6ldCBUr5nQc9o/uEyy4YCgxD\n/ZxNiY5Bb/lMP9nhb2NbG4184mhUMHu+06wWX6RrXQtMtjYhAkEA8DioToMZIy3s\nhPohri3CAgByV2Jxf7JPqVZ93JjlSlBz+aybSv1mOJUPRFpkMk2xiPmHtEn16hYr\nesVK11tcjwJBAPgf4QYAw9dV+DuVqdwz+kmTjnlkr0Q7fjaGfl60DWmuLWmxiRhe\nMYQ2+8iyPDmxcPFTGSpGqyvyJDjQ/wOlWVkCQQCRIuotZW/OnXSFc0reHa9V3kc3\nHLdOW8FdonAw0//Uwn8PnoXE7QzRqt2qgqJ+8goNpBWli/oUEIj8iC8LpptpAkBV\nFFlMfaaph8j+ZWtBHnGMGRSZe3S9qMi2WZerUYHn4tmfjEi+Gk5QT6o2Pyd3gOiB\nV0Uhwemfv/+7m65VybTBAkEA5H59kG+B9HHD5hJtksAtMh8dxk/MI8G0csduU0vu\n7K5ejL522XsHurVrWdqnk6KvjlRXqB4FsMWLE6RBgBNV0A==\n-----END RSA PRIVATE KEY-----'
>>> public.exportKey()
'-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDo1M0P3nryaF8ZITv8vCFVnjUJ\n1mnIsrqXZRTzjin69xepr3czKicG3EYSUqMODQAsvMj0tGMo+ElGOVOkPFLVVBHd\n8izgA/E1RqUzbUDMj4WnhlhAQq7tNaViOXNaZ7krJZHabZKxfYvLAQtm4tr+m5Nt\nXPBaWvjwhd5M9xvktwIDAQAB\n-----END PUBLIC KEY-----'
于 2010-08-17T20:27:06.320 回答