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 回答