Les dejo dos funciones para obtener tanto el md5 de los ficheros como de las cadenas, las funciones fuero probadas en Delphi 2010 creo que en Delphi 7 cambia un poco la forma de obtenerlo
Código (delphi) [Seleccionar]
uses
SysUtils,IdHashMessageDigest, idHash,classes;
//funcin para obtener el md5 de ficheros como los .exe
function FileMD5(const fileName : string) : string;
var
idmd5 : TIdHashMessageDigest5;
fs : TFileStream;//Es una Clase para leer ficheros como los .exe
begin
idmd5 := TIdHashMessageDigest5.Create; //creamos objeto para calcular md5
fs := TFileStream.Create(fileName, fmOpenRead OR fmShareDenyWrite) ; //stream para leer el fichero
try
result := idmd5.HashStreamAsHex(fs); //obtenemos md5 del fichero
finally
//liberamos los objetos
fs.Free;
idmd5.Free;
end
end;
//funcion para obtener el md5 de cualquier string
function StringMd5(const data : string) : string;
var
idmd5 : TIdHashMessageDigest5;
begin
idmd5 := TIdHashMessageDigest5.Create;//creamos el objeto
try
result := idmd5.HashStringAsHex(data);//retornamos el md5 del string
finally
idmd5.Free;//liberamos el objeto
end
end;
var
ruta,strMd5,cadena:string;
begin
ruta:='C:\project1.exe'; //ruta del fichero
strMd5:=FileMD5(ruta); //obtenemos md5
writeln('El md5 del fichero es ',strMd5);//lo mostramos
{-------------------------------------------}
cadena:='hola mundo';//cadena a calcular md5
strMd5:=StringMd5(cadena);//obtenemos su md5
writeln('El md5 del string es ',strMd5);//lo mostramos
readln;
end.