2

I'm currently using this code for md5 hashing in 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;

and I'm trying to get the output the same as the PHP function

md5_file()

I've had a look around and common problems seem to be encoding and not padding with zeroes, but I don't know how to do either of these using TIdHashMessageDigest5 or whether they are already done in the function.

If anyone has any functions they use for this it'd be very appreciated!

Or possibly a way of changing the php function to match the Indy one

2 Answers 2

6

Compare your results with:

If all but one agree what the sum is, then you know where to dig.

Sign up to request clarification or add additional context in comments.

Comments

3

Well, you didn't give a Delphi version number, but if you're on D2007 or later you might want to check out this article.

2 Comments

Thanks for mentioning my article! --jeroen
The article Mason points to got updated today: Edit: 20091223: Since Delphi 7.01, Indy has provided the unit IdHashMessageDigest which also does md5, see the comments.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.