2009-07-15 7 views
1

私はPythonで暗号化関数を作成しています。公開鍵を使って乱数を暗号化したいと思います。Pythonによる暗号化

私はここでkは、乱数自体である

def encrypt(self,plaintext,k) 

...私はメソッドなどを使用する方法よりも暗号化パッケージ( Crypto.publicKey.pubkey)を使用する場合ことを知りたい、これがキーを意味しています。誰かが多少関連して私を助けることができますか?

答えて

3

Pycryptoを試すことができます。

+0

こんにちは、私はpycryptoをインストールしようとしましたが、エラーvcvarsall.batを取得しようとしました。 VC++コンパイラもPython用にインストールしました。どのようなアイデアがその問題だろうか? – Arockia

4

受信者の公開鍵を使用して対称暗号化用のセッション/メッセージキーを暗号化しようとしていますか?そのような場合にSSHやTLSなどを使用する方が簡単かもしれません。戻るあなたの質問に

Me Too Crypto(M2Crypto)はopensslの周りに素敵なラッパーです。今、あなたはあなたのメッセージを暗号化することができ

recip = M2Crypto.RSA.load_pub_key(open('recipient_public_key.pem','rb').read()) 

まず、あなたは、受信者の公開鍵を取得する必要があります

plaintext = random_integer_you_want_to_encrypt 
msg = recip.public_encrypt(plaintext,RSA.pkcs1_padding) 

受信者のプライベートキーを持つ今だけの誰かそれを解読することができます。

0

暗号化するために渡す値kは、キーの一部ではありません。 kは、暗号化をランダム化するために使用されるランダム値です。メッセージを暗号化するたびに異なる乱数にする必要があります。

残念ながら、あなたが使用する公開鍵アルゴリズムに応じて、このkは多かれ少なかれ厳しい条件を満たす必要があります。つまり、kに十分なエントロピーが含まれていないと、暗号化が完全に安全でない可能性があります。これにより、pycryptoの使用が難しくなります。これは、使用する暗号システムの詳細をライブラリの開発者より知る必要があるためです。私の意見では、これはpycryptoの深刻な欠陥であり、私はあなたがそのような詳細を知る必要はないより高いレベルの暗号ライブラリを使用することをお勧めします。 (M2Cryptoのようなもの)