读书人

【请问】delphi里如何算哈希?

发布时间: 2012-03-11 18:15:38 作者: rapoo

【请教】delphi里怎么算哈希???????????
请教:delphi里怎么算哈希?
我原来找了一个,形式是这样:
procedure DoSHA1(BufferIn:array of byte;DataLen:integer;var BufferOut:array of byte);
var
Context: TSHA1Context;
Digest: TSHA1Digest;
begin
SHA1Init(Context);
SHA1Update(Context,@BufferIn,DataLen);
SHA1Final(Context,Digest);
CopyMemory(@BufferOut,@Digest,20);
end;

但是如果输入的数组过长,如10K,则会出错

下边是我从网上找的,不知道怎么用。谁能指点下,有现成的也行,最好是算byte类型数组的。

http://www.xiaokou.org/2005/10/12/54/

[解决办法]
我靠,该死的csdn,第一次提交回复总是失败,还的再写一遍;
听三国说inifile单元里有哈希相关函数,你看看先
[解决办法]
IniFiles里面的那个是TStringHash
[解决办法]
给你一个ELF算法的hash函数,已经改成支持Byte数组了:
function ELFHash(const ByteAry : Array of byte) : Cardinal;
var
i : Cardinal;
x : Cardinal;
begin
Result := 0;
for i := Low(ByteAry) to High(ByteAry) do
begin
Result := (Result shl 4) + ByteAry[i];
x := Result and $F0000000;
if (x <> 0) then
begin
Result := Result xor (x shr 24);
end;
Result := Result and (not x);
end;
end;
[解决办法]
Cardinal是大于等于0的整数,就当是整数好了。
[解决办法]
可以参考IniFiles.pas中THashedStringList

读书人网 >.NET

热点推荐