黄光新 發表於 2021-1-14 13:32:00

system.hash.pas

<p>system.hash.pas</p>
<p>delphi xe8开始提供system.hash.pas。</p>
<p>xe10.4.1版本,提供有几个记录:</p>
<p>THash = record</p>
<p>THashBobJenkins = record</p>
<p>THashMD5 = record</p>
<p>THashSHA1 = record</p>
<p>THashSHA2 = record</p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">usesSystem.Hash;

function md5_hmac(const val, key: string): string;
begin
var md5: THashMD5 := THashMD5.Create;
Result := md5.GetHMAC(val, key);
end;

function md5_utf8(const val: string): string;
begin
var md5: THashMD5 := THashMD5.Create;
md5.Update(TEncoding.UTF8.GetBytes(val));
Result := md5.HashAsString;
end;

function sha1_utf8(const val: string): string;
begin
var sha1: THashSHA1 := THashSHA1.Create;
sha1.Update(TEncoding.UTF8.GetBytes(val));
Result := sha1.HashAsString;
end;

function sha2_utf8(const val: string): string;
begin
var sha2: THashSHA2 := THashSHA2.Create;
sha2.Update(TEncoding.UTF8.GetBytes(val));
Result := sha2.HashAsString;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
Memo1.Lines.Add(md5_utf8('咏南中间件'));         //ce33960c8f97c85161a8b28b7000b3c6
Memo1.Lines.Add(sha1_utf8('咏南中间件'));      //2566ca7678fcdb309846eabef3911dc6e5f8814d
Memo1.Lines.Add(sha2_utf8('咏南中间件'));      //f3bbbfaf81071d67f02fd519553789c671c7e0514045885e5bd8faa80d66792f
Memo1.Lines.Add(md5_hmac('咏南中间件', '钥匙')); //0796b66fa3180024cb5e49cba66dbf58
end;
</pre>
</div>
<p>  </p>

</div>
<div id="MySignature" role="contentinfo">
    <p>本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/p/14276734.html</p><br><br>
来源:https://www.cnblogs.com/hnxxcxg/p/14276734.html
頁: [1]
查看完整版本: system.hash.pas