gpt4 book ai didi

C++:CryptGenRandom 的可移植替代品

转载 作者:行者123 更新时间:2023-11-30 01:39:57 27 4
gpt4 key购买 nike

在应用程序的每次启动时,应该创建一个 128 位的随机消息,这样消息之前没有被选择的可能性最大,这也应该是安全的(即不能被一些黑客破坏)。例如,使用从系统时间获取种子的标准随机生成器是不安全的,因为它可以通过以某种方式卡住系统时间来破坏(无论如何这可能吗?)。

Windows 函数 CryptGenRandom似乎适合这个。但是有没有可移植替代品?如果没有,Linux和Mac有对应的功能吗?

最佳答案

The Windows function CryptGenRandom seems to be appropriate for this. But is there a portable alternative?

这取决于你如何看待它;我不确定是否有可以直接包装平台 RNG 的独立包装器。但大多数加密库都会有一个随机生成器,它直接引用或 - 更有可能 - 从操作系统随机数生成器中为自己播种。

例如,阅读 Crypto++ 的 AutoSeeded 生成器 here .这些库从操作系统提供的功能中抽象出来,为您提供了一个可移植的选项,将对底层平台的调用保持在最低限度(即它们既安全又快速)。

If not, are there corresponding functions for Linux and Mac?

要直接使用加密随机数,请使用 /dev/urandom。通常没有理由使用可能会阻塞的 /dev/random。不过,我建议使用经过严格审查的库。


特别是如果您使用的是嵌入式或虚拟化设备和操作系统,确保操作系统随机数生成器足够随机是值得的。例如,对于虚拟化系统,确保为操作系统安装 VM 扩展通常是个好主意。

额外的种子也可以添加到随机数生成器中,因此如果您有任何看起来随机的东西,如果您不确定随机数的强度,将它添加为种子可能​​是明智的。

当然,拥有带有 RNG 扩展(由操作系统或库使用)(例如 Intel RD_RAND)的 CPU 也是有意义的。

关于C++:CryptGenRandom 的可移植替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44602902/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com