【发布时间】:2017-06-17 09:26:00
【问题描述】:
在应用程序的每次启动时,应创建一条 128 位的随机消息,以使该消息之前未被以最大概率选择过,并且这也应该是安全的(即不能被某些黑客破坏)。例如,使用从系统时间获取种子的标准随机生成器是不安全的,因为它可以通过以某种方式冻结系统时间来破坏(这可能吗?)。
Windows 函数CryptGenRandom 似乎适用于此。但是有便携的替代品吗?如果没有,Linux和Mac有对应的功能吗?
【问题讨论】:
-
这可能不是那么容易。可以在here 找到一些评论(尽管有点过于自信地提出了恕我直言)。核心信息是,std::random_device 可能有一些缺陷,但我从未接触过它,也许它会对你有所帮助。尽管如此,你的问题有点宽泛。也许将cryptoPRNG的当前状态保存在本地数据库或文件中要容易得多,这很容易做到(并且只需要1个init;碰撞概率可以忽略不计恕我直言)。但这当然取决于具体的用例。
-
@sascha:有趣的链接,std::random_device 也可能有用。谢谢,这很有帮助!
标签: c++ random cryptography