2012-02-08 6 views
15

私はPyCrypto 2.3を使用しています。生成した鍵をクライアントとサーバに配布するためにファイルに保存したいと思います。私は正しくキーを印刷する方法を見つけることができないようで、どちらもインターネット上の例を見つけることはできません。pycryptoを使用してファイルにRSA鍵を保存する

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> 

と第二の、keysprivatekeyという名前の機能を有していません。

誰も以前に行ったことはありますか?

答えて

28

keys.exportKey()秘密鍵はkeys.publickey().exportKey()公開鍵用です。 format引数で出力形式を変更することができます。docs at this siteを参照してください。

+1

からは、いくつかの研究の後exportKey' 'のドキュメントを見つけました。 _RSAobjドキュメントにあります。それを見るには 'show private'をクリックしてください。 – qdii

+0

これをファイルにエクスポートしたので、ファイルを読むときに、それらをpython/pycryptoにインポートする方法はありますか? –

+3

@CharlieParker 'RSA.importKey' – wRAR

1

次のコードは、RSAキーペアを作成し、PEMファイルに保存して印刷します。

オリジナルクレジット:WRARこのポスト& AJのpoultierから[OK]を[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) 
関連する問題