Получить хеш файла

Функция хеширование файла.

//проверка занят ли файл
function ApplicationUse (fName: string): boolean;
var
HFileRes: HFILE;
begin
Result := false;
if not FileExists (fName) then exit;
HFileRes := CreateFile (pchar (fName), GENERIC_READ or GENERIC_WRITE, 0, nil,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
Result := (HFileRes = INVALID_HANDLE_VALUE);
if not Result then CloseHandle (HFileRes);
end;

 

//хеширование

function MD5 (const fileName : string) : string;

var

idmd5 : TIdHashMessageDigest5;

fs : TFileStream;

hash : T4x4LongWordRecord;

begin

idmd5 := TIdHashMessageDigest5.Create;

if not ApplicationUse (fileName) then //если файл не занят

begin

fs := TFileStream.Create (fileName, fmOpenRead OR fmShareDenyWrite) ;

try

result := idmd5.AsHex (idmd5.HashValue (fs)) ;

finally

//fs.Free;

end;

FreeAndNil (fs);

FreeAndNil (idmd5);

     //idmd5.Free;

end;

FreeAndNil (fs);

FreeAndNil (idmd5);

end;

 

Вызываем функцию

hash.Add (MD5 (‘путь к файлу+файл с расширением’));

About admin

Speak Your Mind

Tell us what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!

Подтвердите, что Вы не бот — выберите самый большой кружок: