我正在使用以下代码生成用于加密目的的伪随机数序列,但后来我在某处读到它可能不是很安全。有人能给我一个更好的生成器的 C 实现吗——主要目标是让这种方法更快。例如,我做了一些研究,发现了Blum Blum Shub方法,它会通过 pow(N) 计算完全降低性能。
PS。并且请不要引用没有 C/C++ 代码的 Wikipedia 文章。我正在寻找下面显示的 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'
}