Código
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.