gpt4 book ai didi

c++ - 用于 C 密码学的快速伪随机数生成器

转载 作者:可可西里 更新时间:2023-11-01 15:41:19 24 4
gpt4 key购买 nike

我使用以下代码生成用于加密目的的伪随机数序列,但后来我在某处读到它可能不是很安全。谁能给我一个更好的生成器的 C 实现——主要目标是让这种方法更快。例如,我做了一些研究并发现了 Blum Blum Shub方法,这将通过执行 pow(N) 计算完全降低性能。

附言。并且请不要引用没有 C/C++ 代码的维基百科文章。我正在寻找下面显示的 C 或 C++ 代码示例。

#define ROL(v, shift) ((((v) >> ((sizeof(v) * 8) - (shift))) | ((v) << (shift))))

ULONGLONG uiPSN = doSeed(); //64-bit unsigned integer

for(int i = 0; i < sizeOfArray; i++)
{
uiPSN = uiPSN * 214013L + 2531011L;
uiPSN = ROL(uiPSN, 16);

//Apply 'uiPSN'
}

最佳答案

ISAAC ( http://www.burtleburtle.net/bob/rand/isaacafa.html ) 可能是最快的加密安全 PRNG 之一(现场代码)。另一种方法是在计数器模式下使用分组密码。像 TwoFish 这样速度相当快且免费提供的东西会很有效。

如果您不需要很多数字,所有现代操作系统都有适合加密用途的内置 RNG,但它们通常不能生成大量数字,因为它们依赖于从输入计时等来源累积熵。类 Unix 系统(Linux、OSX)有/dev/random,Windows 有 CryptGenRandom。即使这些不适合您的需求,您也可能应该使用它们来为您最终使用的 PRNG 提供种子。

关于c++ - 用于 C 密码学的快速伪随机数生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18323738/

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