我使用以下代码生成用于加密目的的伪随机数序列,但后来我在某处读到它可能不是很安全.有人可以给我一个更好的生成器的C实现 - 主要目标是这个方法快速.例如,我做了一些研究并遇到了Blum Blum Shub方法,它会通过执行pow(N)计算完全扼杀性能.
PS.请不要引用没有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'
}
Run Code Online (Sandbox Code Playgroud)