c++ - 用于 RSA PKCS#1( key 生成)的 C++ 中的加密安全 RNG

标签 c++ random cryptography rsa

我正在尝试在 C++ 中重新实现 RSA key 生成(作为爱好/学习游乐场),到目前为止,我最大的问题似乎是在 x,y 范围内生成一个随机数,这也是加密安全的(素数 p 和q,例如)。

我想在这种情况下(RSA),将 mt19937 或 std::rand 与安全随机种子(例如/dev/urandom 或 OpenSSL RAND_bytes 等)一起使用不会被视为“加密安全”?

ISAAC看起来很有希望,但我对如何使用它的线索为零,因为我根本找不到任何文档。

值得注意的是,这也是我的第一个 C++ 项目(我之前做过一些 C、Rust 等......所以 C++ 至少感觉有点熟悉,而且我不是一个完整的新手,请注意)。

最佳答案

I suppose using mt19937 or std::rand with a secure random seed (e.g. /dev/urandom or OpenSSL RAND_bytes etc) would not be considered 'cryptographically secure' in this case (RSA)?



不,这些对于基本上任何目的都不是加密安全的。

ISAAC looked promising but I have zero clue on how to use it since I wasn't able to find any documentation at all.



嗯,我猜的时间到了。但我会简单地使用 C++ 库,如 Crypto++ 或 Botan 或类似的东西,然后只需实现 RSA key 对生成位,借用他们的一个安全随机生成器。幸运的是,他们还有一个 bignum库,这样您也不必实现它。

关于c++ - 用于 RSA PKCS#1( key 生成)的 C++ 中的加密安全 RNG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60475527/

相关文章:

java - 如何在 spring boot 中获得可重现的 Pbkdf2PasswordEncoder 输出?

javascript - md5 递增地哈希一个大文件?

c++ - QNetworkReply::error 信号什么时候会跟着一个 finish() 信号?

c++ - std::bitset<size> 中的可变位长度

mysql - 如何在没有数字 ID 的情况下从 MySQL 数据库表中获取随机行?

android - 在 Android 的 Recycler View 中的 TextView 背景上生成和设置随机颜色

java - 如何处理多个密码

c++ - 初始化模板类的静态模板化成员

c++ - 在没有 std::stod 的情况下从 vector<string> 转换为 vector<double>

python - 在 Python 中使用 Random.seed()、 'for' 和乘法输出 30-35 之间的随机数