uses
..., IdHash, IdHashMessageDigest;
var
Hash: TIdBytes;
begin
with TIdHashMessageDigest5.Create do
try
st2.Position := 0;
Hash := HashStream( st2 );
finally
Free;
end;
// use Hash as needed...
end;
uses
..., IdHash, IdHashSHA;
var
Hash: TIdBytes;
begin
with TIdHashSHA1.Create do
try
st2.Position := 0;
Hash := HashStream( st2 );
finally
Free;
end;
// use Hash as needed...
end;
4条答案
按热度按时间vwkv1x7d1#
请参阅此处:
https://sergworks.wordpress.com/2014/10/25/high-performance-hash-library/
SHA1 hashing in Delphi XE
https://sourceforge.net/projects/sha1implementat/
http://www.colorfultyping.com/generating-a-sha-1-checksum-for-a-given-class-type/
顺便说一句,你没有提到你的 Delphi 版本。如果你使用的是一个现代版本(XE以上),我想它的标准库应该支持SHA-1,MD5等。
您可以这样做:
mi7gmzs62#
您使用的似乎是Indy 9,它不支持SHA1。SHA1(以及其他一些哈希,包括其他几个SHA)。
TIdHash
的接口也在Indy 10中重新编写。在其他更改中,HashValue()
方法被新的Hash...()
和Hash...AsHex()
方法取代(HashString(AsHex)
、HashStream(AsHex)
、HashBytes(AsHex)
),例如:9nvpjoqh3#
还有两个选项:
http://www.spring4d.org
http://lockbox.seanbdurkin.id.au/HomePage
mec1mxoz4#
为了以防万一,在最新的 Delphi 版本中,您可以尝试: