Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。
想要改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
已关闭6年。
Improve this question
谁能为Delphi(Win32)推荐一个加密安全的伪随机数生成器库?
可以是免费的或商业的,但理想情况下将是一个活跃的项目。我希望它包含源代码。
使用上述代码的示例:
想要改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
已关闭6年。
Improve this question
谁能为Delphi(Win32)推荐一个加密安全的伪随机数生成器库?
可以是免费的或商业的,但理想情况下将是一个活跃的项目。我希望它包含源代码。
最佳答案
您可以使用Windows CryptoAPI:
uses Wcrypt2;
function GenerateRandom(Len: Cardinal): TBytes;
var
hProv : HCRYPTPROV;
begin
if not CryptAcquireContext(@hProv,
nil,
MS_ENHANCED_PROV,
PROV_RSA_FULL,
CRYPT_VERIFYCONTEXT) then
CryptAcquireContext(@hProv,
nil,
MS_ENHANCED_PROV,
PROV_RSA_FULL,
CRYPT_NEWKEYSET + CRYPT_VERIFYCONTEXT);
if hProv > 0 then
try
SetLength(Result,Len);
CryptGenRandom(hProv,Len,@Result[0]);
finally
CryptReleaseContext(hProv,0);
end;
end;
使用上述代码的示例:
function BytesToHex(const Bytes: TBytes): string;
var
i : integer;
begin
for i := 0 to Length(Bytes)-1 do
Result := Result + IntToHex(Bytes[i],2);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(BytesToHex(GenerateRandom(16)));
end;
09-15 20:27