我在 PyCrypto 中使用 RSA 实现。关于 encrypt(self, plaintext, K) 方法,K 是随机数据的参数。我想知道需要传递多少随机数据才能使加密数据被认为是安全的。例如,在我的实现中,我通过 Crypto.Util.number 模块传递了一个 1024 位的强素数,如下所示:
enc_data = public_key.encrypt(data, number.getPrime(1024))
这是否被认为“足够安全”?
谢谢
我在 PyCrypto 中使用 RSA 实现。关于 encrypt(self, plaintext, K) 方法,K 是随机数据的参数。我想知道需要传递多少随机数据才能使加密数据被认为是安全的。例如,在我的实现中,我通过 Crypto.Util.number 模块传递了一个 1024 位的强素数,如下所示:
enc_data = public_key.encrypt(data, number.getPrime(1024))
这是否被认为“足够安全”?
谢谢
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