1

PyCrypto で RSA 実装を使用しています。encrypt(self, plaintext, K) メソッドに関して、K はランダム データのパラメータです。暗号化されたデータが安全であると見なされるためには、どれだけのランダム データを渡す必要があるかを知りたいです。たとえば、私の実装では、次のように Crypto.Util.number モジュールを介して 1024 ビットの強力な素数を渡しています。

enc_data = public_key.encrypt(data, number.getPrime(1024))

これは「十分に安全」と見なされますか?

ありがとう

4

1 に答える 1

3

RSA実装はKパラメーターを使用しません。あなたはそれを無視するかもしれません。RSA実装はそうします。

59〜60行目pycrypto-2.3/lib/Crypto/PublicKey/RSA.pyを見ると、次のことがわかります。

def _encrypt(self, c, K):
    return (self.key._encrypt(c),)

Kこれは、提供された場合、無視されることを証明します。

公式ドキュメント

さらに、開発者はこれをドキュメントで明示的に宣言します。実際、公開鍵を作成しpublic_keyて入力すると

help(public_key.encrypt)

明示的に次のように記載されているドキュメントを入手できます。

encrypt(self, plaintext, K) method of Crypto.PublicKey.RSA._RSAobj instance
Encrypt a piece of data with RSA.

...
...

:Parameter K: A random parameter (*for compatibility only. This
 value will be ignored*)
:Type K: byte string or long
于 2011-08-27T18:14:21.733 に答える