В настоящее время я использую этот код для хеширования md5 в Delphi 7:
function MD5(const fileName : string) : string; var idmd5 : TIdHashMessageDigest5; fs : TFileStream; begin idmd5 := TIdHashMessageDigest5.Create; fs := TFileStream.Create(fileName, fmOpenRead OR fmShareDenyWrite) ; try result := idmd5.AsHex(idmd5.HashValue(fs)) ; finally fs.Free; idmd5.Free; end; end;
и я пытаюсь получить результат так же, как функция PHP
md5_file()
Я смотрю вокруг, и обычные проблемы кажутся кодировкой, а не заполнением нулями, но я не знаю, как это сделать, используя TIdHashMessageDigest5 или они уже выполнены в этой функции.
Если у кого есть какие-то функции, которые они используют для этого, это будет очень полезно!
Или, возможно, способ изменения функции php для соответствия Indy one
Сравните результаты с:
md5(file_get_contents( ))
в PHP
hash("md5", )
из расширения hash("md5", )
PHP
программы командной строки md5 (1) aka md5sum (1)
Если все, кроме одного, согласны с суммой, то вы знаете, где копать.
Ну, вы не указали номер версии Delphi, но если вы на D2007 или новее, вы можете проверить эту статью.