完整源代码:http://download.csdn.net/user/zt_tju //onecool 2008年10月22日修改 function TFormMain.hash_password(pwd: string): string; var SHA1Context: TSHA1Context; SHA1Digest: TSHA1Digest; tmpStr: string; p, r: array[0..256] of char; //type sss:array[0..3] of byte; zt:array[0..23] of byte; xxx:string; i:Integer; begin FillMemory(@p[0], 257, 0); FillMemory(@r[0], 257, 0); zt[0]:=210; zt[1]:=180; zt[2]:=98; zt[3]:=8;
SHA1Init(SHA1Context); SHA1Update(SHA1Context, PChar(pwd), Length(pwd)); SHA1Final(SHA1Context, SHA1Digest); //上面是SHA1,SHA1Digest 为经过SHA1后的结果。 for i:=4 to 23 do begin zt[i]:=SHA1Digest[i-4]; end ;
SHA1Init(SHA1Context); SHA1Update(SHA1Context, @zt[0], 24); SHA1Final(SHA1Context, SHA1Digest); for i:=4 to 23 do begin zt[i]:=SHA1Digest[i-4]; end ; tmpStr := PChar(@zt); BinToHex(PChar(tmpStr), r, Length(tmpStr)); Result := UpperCase(r);