使用到TIdHashMessageDigest5.
uses IdHashMessageDigest;
function Preprocess(aPassWord, aVerifyCode:string):string;
begin
Result:= Fmd5(md5_3(aPassWord) + UpperCase(aVerifyCode));
end;
function md5_3(str:string):string;
begin
Result:= Fmd5(str);
Result:= HashStr2BinStr(Result);
Result:= Fmd5(Result);
Result:= HashStr2BinStr(Result);
Result:= Fmd5(Result);
end;
function Fmd5(str:string):string;
var
md5 : TIdHashMessageDigest5;
longWordRec : T4x4LongWordRecord;
begin
md5 := TIdHashMessageDigest5.Create;
try
{$IFDEF ID10}
Result:= md5.HashStringAsHex(str);
{$ELSE}
longWordRec:= md5.HashValue(str);
Result:= md5.AsHex(longWordRec);
{$ENDIF}
finally
md5.Free;
end;
end;
function HashStr2BinStr(Hash:string):string;
var
buf:array[0..63] of Char;
i:Integer;
begin
Result:='';
FillChar(buf, SizeOf(buf),0);
SetLength(Result, Round(Length(Hash)/2));
FillChar(Result[1], Length(Result),0);
HexToBin(PChar(Hash), buf,SizeOf(buf));
for i:=0 to Round(Length(Hash)/2)-1 do
Result:= buf;
end;
使用方法:
密码和验证码加密后的结果 = Preprocess(密码, 验证码);
本文介绍了一种使用TIdHashMessageDigest5组件进行三次MD5哈希运算并结合验证码的密码预处理加密方法。该方法首先对原始密码进行MD5哈希处理,然后将结果与验证码拼接再进行两次额外的MD5哈希处理,最后返回加密后的字符串。

7708

被折叠的 条评论
为什么被折叠?



