对于Diffie Hellman prime和generator,我应该使用什么密钥长度?

时间:2010-01-18 20:55:01

标签: encryption cryptography crypto++

在下面的代码中,来自Crypto ++ wiki,我真正应该使用的数字是128吗?

CryptoPP::AutoSeededRandomPool arngA;
CryptoPP::RandomNumberGenerator& rngA = *dynamic_cast<CryptoPP::RandomNumberGenerator *>(&arngA); 
CryptoPP::DH dhA(rngA, 128);
CryptoPP::Integer iPrime = dhA.GetGroupParameters().GetModulus();
CryptoPP::Integer iGenerator = dhA.GetGroupParameters().GetSubgroupGenerator();

1 个答案:

答案 0 :(得分:3)

Z /(pZ)上的整数因子分解和离散对数大致同样困难。因此,Diffie-Hellman的模量大小应与您为RSA模数选择的大小相同。如果您熟悉1024位RSA密钥,那么您也可以使用1024位Diffie-Hellman密钥。

要判断crypto ++中的密钥大小是以位还是字节来衡量,这并不容易。 正如塞巴斯蒂安指出的那样,dhA(rngA,128)可能确实会生成一个128位的Diffie-Hellman密钥,这个密钥太小了。通过代码看起来确实如此。

生成器iGenerator的大小不会影响Diffie-Hellman的安全性。 (即iGenerator = 2可能非常好)