Encryption 对于Diffie Helman素数和生成器,我应该使用什么键长度?

Encryption 对于Diffie Helman素数和生成器,我应该使用什么键长度?,encryption,cryptography,crypto++,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.

在下面的代码中,来自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();
CryptoPP::autoseedrandompool arngA;
CryptoPP::RandomNumberGenerator&rngA=*动态广播(&arngA);
CryptoPP::DH dhA(rngA,128);
CryptoPP::Integer iPrime=dhA.GetGroupParameters().getModules();
CryptoPP::Integer iGenerator=dhA.GetGroupParameters().GetSubgroupGenerator();

整数因式分解和Z/(pZ)上的离散对数大致上同样困难。因此,Diffie-Hellman的模的大小应该与RSA模的大小相同。如果您对1024位RSA密钥感到满意,那么您也可以对1024位Diffie-Hellman密钥感到满意

很难判断crypto++中的密钥大小是以位还是字节为单位。 正如塞巴斯蒂安指出的那样,dhA(rngA,128)确实可能生成一个128位Diffie-Hellman密钥,这个密钥太小了。通读代码,看起来情况确实如此


发电机的尺寸不会影响Diffie Hellman的安全性。(即iGenerator=2可以非常好)

文档对我来说有些不透明。我不知道128是DH素数的位大小,还是别的什么。谢谢这个问题和代码。我认为Wiki中的代码是不完整的,它错过了动态转换。()尝试此代码会得到一个大约40位的数字,对应128位代码。将参数更改为1024,iPrime大约有300位数字。