我正在尝试在 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/