在下面的代码中,来自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();
答案 0 :(得分:3)
Z /(pZ)上的整数因子分解和离散对数大致同样困难。因此,Diffie-Hellman的模量大小应与您为RSA模数选择的大小相同。如果您熟悉1024位RSA密钥,那么您也可以使用1024位Diffie-Hellman密钥。
要判断crypto ++中的密钥大小是以位还是字节来衡量,这并不容易。 正如塞巴斯蒂安指出的那样,dhA(rngA,128)可能确实会生成一个128位的Diffie-Hellman密钥,这个密钥太小了。通过代码看起来确实如此。
生成器iGenerator的大小不会影响Diffie-Hellman的安全性。 (即iGenerator = 2可能非常好)