获取文件md5值

        前面做系统自动更新时,想通过MD5值来检查文件版本差异,在网上看到了很多代码,都能计算出MD5值来。今天偶然看到indy的demo时发现indy有几个类是实现这个功能的,那就没必要自己去写代码了,直接利用起来就可以了。  下面是borland c++  和  delphi的代码:


DELPHI:

uses IdHash,IdHashMessageDigest;


function GetFileMd5Code(AFileName: string): string;
var
  LMd5: TIdHashMessageDigest5;
  S, S1: string;
  i: Integer;
  LFileStream: TMemoryStream;
  Digest: T4x4LongWordRecord;
begin
  SetLength(S, 16);

  LFileStream := TMemoryStream.Create;
  LFileStream.LoadFromFile(AFileName);

  LMd5 := TIdHashMessageDigest5.Create;
  Digest :=  LMd5.HashValue(LFileStream);
  Move(Digest, S[1], 20);

  for i := 1 to Length(S) do begin
    S1 := S1 + Format('%02x', [Byte(S[i])]);
  end;
  while Pos(' ', S1) > 0 do S1[Pos(' ', S1)] := '0';
  Result := S1;
end;



BORLAND C++:


AnsiString TForm1::GetFileMd5Code(AnsiString AFileName)
{
TIdHashMessageDigest5 *LMd5= new TIdHashMessageDigest5();
AnsiString S[16], S1;
int i;
TMemoryStream *LFileStream =  new TMemoryStream();
LFileStream->LoadFromFile(AFileName);
Sysutils::TBytes LBytes;
LBytes = LMd5->HashStream(LFileStream);


delete LMd5;
delete LFileStream;
return StringOf(LBytes);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值