2012-02-08 116 views
15

我使用PyCrypto 2.3,我想救我已经生成到一个文件中的密钥,从而为他们分发到客户端和服务器。我似乎无法找到正确打印键的方法,我也无法在互联网上找到示例。保存RSA密钥文件,使用pycrypto

def resetKeys(self): 
     keys = RSA.generate(1024) 

     privHandle = open(self.privateKeyFile, 'wb') 
     privHandle.write(keys.privatekey()) 
     privHandle.close() 

     pubHandle = open(self.publicKeyFile, 'wb') 
     pubHandle.write(keys.publickey()) 
     pubHandle.close() 

此代码不能的原因是多方面的工作:第一,keys.publickey()似乎并不可打印,则返回:

<_RSAobj @0x10f810d0 n(1024),e> 

和第二,keys没有命名privatekey功能。

以前有人做过吗?

回答

28

keys.exportKey()私钥,keys.publickey().exportKey()的公钥。您可以使用format参数更改输出格式,请参阅docs at this site

+1

好吧,发现exportKey'的'的文档经过一番研究。它在_RSAobj文档中。点击'show private'查看它。 – qdii 2012-02-09 08:52:38

+0

现在你已经将它们导出到一个文件中,当你读取文件时,是否有办法将它们导回到python/pycrypto? – 2013-12-08 23:06:09

+3

@CharlieParker'RSA.importKey' – wRAR 2013-12-09 11:50:29

1

下面的代码将在PEM创建RSA密钥对,并将它们存储作品文件以及打印。

原始学分:WRAR这个职位& AJ poultier从[pyOpenSSL creating a pem file

from Crypto.PublicKey import RSA 
private_key = RSA.generate(1024) 
public_key = private_key.publickey() 
print(private_key.exportKey(format='PEM')) 
print(public_key.exportKey(format='PEM')) 

with open ("private.pem", "w") as prv_file: 
    print("{}".format(private_key.exportKey()), file=prv_file) 

with open ("public.pem", "w") as pub_file: 
    print("{}".format(public_key.exportKey()), file=pub_file)