【问题标题】:PyCrypto: How much random data is considered secure?PyCrypto:有多少随机数据被认为是安全的?
【发布时间】:2011-08-27 17:12:35
【问题描述】:

我在 PyCrypto 中使用 RSA 实现。关于 encrypt(self, plaintext, K) 方法,K 是随机数据的参数。我想知道需要传递多少随机数据才能使加密数据被认为是安全的。例如,在我的实现中,我通过 Crypto.Util.number 模块传递了一个 1024 位的强素数,如下所示:

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

这是否被认为“足够安全”?

谢谢

【问题讨论】:

  • @Tom 是的,我正在使用 Crypto.PublicKey.RSA。在docs 中,它谈到了使用 Crypto.Util.number 模块生成合适长度的素数。我的问题集中在什么被认为是“合适”或“安全”的长度上。
  • 我下载了这个包,但是现在我找不到那个类的源代码。我一定是疯了。
  • @Greg 你在找数字类吗?它在 Lib\site-packages\Crypto\Util
  • 我不明白为什么你需要在这里传递一个 素数,如果目标是有一个随机数 - 这将比正常随机数具有更少的熵这个大小的数量(并且更难创建)。

标签: cryptography rsa public-key-encryption pycrypto


【解决方案1】:

RSA 实现使用 K 参数。你可以忽略它; RSA 实现确实如此。

查看pycrypto-2.3/lib/Crypto/PublicKey/RSA.py 的第 59-60 行,您会看到以下内容:

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

【讨论】:

  • 请问您有这方面的参考吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
  • 2011-08-25
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
  • 2021-02-04
相关资源
最近更新 更多