program md5;
{$APPTYPE CONSOLE}
uses
SysUtils,
MessageDigest_5 in 'C:\Program Files\Embarcadero\RAD Studio\7.0\source\Win32\soap\wsdlimporter\MessageDigest_5.pas';
// Vista/Windows 7: MessageDigest_5 in 'C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\source\Win32\soap\wsdlimporter\MessageDigest_5.pas';
function GetMd5(const Value: AnsiString): string; overload;
var
hash: MessageDigest_5.IMD5;
fingerprint: string;
begin
hash := MessageDigest_5.GetMD5();
hash.Update(Value);
fingerprint := hash.AsString();
Result := LowerCase(fingerprint);
end;
function GetMd5(const Value: UnicodeString): string; overload;
var
hash: MessageDigest_5.IMD5;
fingerprint: string;
begin
hash := MessageDigest_5.GetMD5();
hash.Update(Value);
fingerprint := hash.AsString();
Result := LowerCase(fingerprint);
end;
var
SourceAnsiString: AnsiString;
SourceUnicodeString: UnicodeString;
SourceRawByteString: RawByteString;
begin
try
SourceAnsiString := 'foobar';
SourceUnicodeString := 'foobar';
SourceRawByteString := 'foobar';
Writeln(GetMd5(SourceAnsiString));
Writeln(GetMd5(SourceUnicodeString));
Writeln(GetMd5(SourceRawByteString));
SourceAnsiString := 'föøbår';
SourceUnicodeString := 'föøbår';
SourceRawByteString := 'föøbår';
Writeln(SourceAnsiString, ' ', GetMd5(SourceAnsiString));
Writeln(SourceUnicodeString, ' ', GetMd5(SourceUnicodeString));
Writeln(SourceRawByteString, ' ', GetMd5(SourceRawByteString));
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.