我需要生成一个12字节的随机数据用于加密目的。我的第一个想法是用像这样的东西
random(maxint) * random(maxint) * random(maxint)
但我发现这在多线程上效率不是很高,因为随机使用全局变量RandSeed(事实上,随机不是多线程)。还随机看起来很容易猜到:
function Random(const ARange: Integer): Integer;
var
Temp: Integer;
begin
Temp := RandSeed * B1a1a1b8088405 + 1;
RandSeed := Temp;
Result := (UInt64(Cardinal(ARange)) * UInt64(Cardinal(Temp))) shr 32;
end;
所以如果你知道其中一个随机数,你就可以很容易地猜出下一个随机数。
他们有没有替代随机的方法来生成我的12字节随机字节?
暂无答案!
目前还没有任何答案,快来回答吧!