uses
IdHashMessageDigest,IdGlobal, IdHash;
procedure TForm1.btn1Click(Sender: TObject);
begin
ShowMessage(md5(16,'1234'));
ShowMessage(md5(32,'1234'));
end;
function TForm1.md5(len:Integer;s:string):string;
var
MyMD5: TIdHashMessageDigest5;
Digest: T4x4LongWordRecord;
begin
Result := '';
MyMD5 := TIdHashMessageDigest5.Create;
try
Digest := MyMD5.HashValue(s);
//32个字符长度的MD5签名结果
if len = 32 then
Result := MyMD5.AsHex(Digest);
//16个字符长度的MD5签名结果
if len = 16 then
Result := Copy(MyMD5.AsHex(Digest), 9, 16);
finally
MyMD5.Free;
end;
end;
11-21