请教: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/
我原来找了一个,形式是这样:
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/
听三国说inifile单元里有哈希相关函数,你看看先
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是什么?