Delphi XE2获取文件的 MD5、CRC、SHA-1、SHA-256、SHA-5

unit untCheckCode;  
      
    interface  
      
    function GetFile_MD5(const iFileName: String): String;    // 获取文件MD5  
    function GetFile_CRC(const iFileName: String): String;    // 获取文件CRC  
    function GetFile_SHA1(const iFileName: String): String;   // 获取文件SHA1  
    function GetFile_SHA256(const iFileName: String): String; // 获取文件SHA256  
    function GetFile_SHA384(const iFileName: String): String; // 获取文件SHA384  
    function GetFile_SHA512(const iFileName: String): String; // 获取文件SHA512  
澳门新葡亰网站注册,      
    implementation  
      
    uses IdHashMessageDigest, Classes, IdHashCRC, IdHashSHA,
IdSSLOpenSSLHeaders;
       
    var  
      FOpenSSLLoad: Boolean;  
      
function GetFile_MD5(const iFileName: string): String;
var
  MemSteam: TMemoryStream;
  MyMD5   : TIdHashMessageDigest5;
begin
  MemSteam := TMemoryStream.Create;
  MemSteam.LoadFromFile(iFileName,’,’,’);
  MyMD5  := TIdHashMessageDigest5.Create;
  Result := MyMD5.HashStreamAsHex(MemSteam,’,’,’);
  MyMD5.Free;
  MemSteam.Free;
end;
      
    function GetFile_CRC(const iFileName: String): String;  
    var  
      crc       : TIdHashCRC32;  
      fileStream: TMemoryStream;  
    begin  
      crc        := TIdHashCRC32.Create;  
      fileStream := TMemoryStream.Create;  
      try  
        fileStream.LoadFromFile(iFileName,’,’,’);  
        Result := crc.HashStreamAsHex(fileStream,’,’,’);  
      finally  
        fileStream.Free;  
        crc.Free;  
      end;  
    end;  
      
    function GetFile_SHA1(const iFileName: String): String;  
    var  
      SHA1      : TIdHashSHA1;  
      fileStream: TMemoryStream;  
    begin  
      SHA1       := TIdHashSHA1.Create;  
      fileStream := TMemoryStream.Create;  
      try  
        fileStream.LoadFromFile(iFileName,’,’,’);  
        Result := SHA1.HashStreamAsHex(fileStream,’,’,’);  
      finally  
        fileStream.Free;  
        SHA1.Free;  
      end;  
    end;  
      
    function GetFile_SHA256(const iFileName: String): String;  
    var  
      SHA256    : TIdHashSHA256;  
      fileStream: TMemoryStream;  
    begin  
      if FOpenSSLLoad then  
      begin  
        SHA256     := TIdHashSHA256.Create;  
        fileStream := TMemoryStream.Create;  
        try  
          fileStream.LoadFromFile(iFileName,’,’,’);  
          Result := SHA256.HashStreamAsHex(fileStream,’,’,’);  
        finally  
          fileStream.Free;  
          SHA256.Free;  
        end;  
      end  
      else  
      begin  
        Result := ‘Error’;  
      end;  
    end;  
      
    function GetFile_SHA384(const iFileName: String): String;  
    var  
      SHA384    : TIdHashSHA384;  
      fileStream: TMemoryStream;  
    begin  
      if FOpenSSLLoad then  
      begin  
        SHA384     := TIdHashSHA384.Create;  
        fileStream := TMemoryStream.Create;  
        try  
          fileStream.LoadFromFile(iFileName,’,’,’);  
          Result := SHA384.HashStreamAsHex(fileStream,’,’,’);  
        finally  
          fileStream.Free;  
          SHA384.Free;  
        end;  
      end  
      else  
      begin  
        Result := ‘Error’;  
      end;  
    end;  
      
    function GetFile_SHA512(const iFileName: String): String;  
    var  
      SHA512    : TIdHashSHA512;  
      fileStream: TMemoryStream;  
    begin  
      if FOpenSSLLoad then  
      begin  
        SHA512     := TIdHashSHA512.Create;  
        fileStream := TMemoryStream.Create;  
        try  
          fileStream.LoadFromFile(iFileName,’,’,’);  
          Result := SHA512.HashStreamAsHex(fileStream,’,’,’);  
        finally  
          fileStream.Free;  
          SHA512.Free;  
        end;  
      end  
      else  
      begin  
        Result := ‘Error’;  
      end;  
    end;  
      
    initialization  
      
    FOpenSSLLoad := IdSSLOpenSSLHeaders.Load(,’,’,’);  
      
    end.  

unit untCRCMD5;

interface

{ 获取文件CRC校验码 }
function GetFileCRC(const iFileName: string): String;
{ 获取字符串CRC校验码 }
function GetStringCRC(const Str: string): Cardinal;
{ 取文件MD5码 }
function GetFileMD5(const iFileName: string): String;

implementation