主页 > 编程资料 > Delphi >
发布时间:2015-09-22 作者:网络 阅读:169次

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.  

关键字词: