2

在下面的代码中,来自 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();
4

1 回答 1

3

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

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

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

于 2010-01-19T10:21:20.277 回答