我在PyCrypto中使用RSA实现。关于加密(自身,明文,K)方法,K是随机数据的参数。我想知道需要传递多少随机数据才能使加密数据被认为是安全的。例如,在我的实现中,我通过Crypto.Util.number模块传递强大的1024位素数,如下所示:
enc_data = public_key.encrypt(data, number.getPrime(1024))
这被认为是'足够安全'吗?
由于
答案 0 :(得分:3)
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