Delphi有加密安全的PRNG库吗?
发布时间:2020-12-15 10:11:31 所属栏目:大数据 来源:网络整理
导读:任何人都可以为Delphi(Win32)推荐一个加密安全的伪随机数生成器库吗? 可以是免费的或商业的,但理想情况下是一个活跃的项目.我希望它包含源代码. 解决方法 您可以使用Windows CryptoAPI: uses Wcrypt2;function GenerateRandom(Len: Cardinal): TBytes;var
任何人都可以为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,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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |