RSS订阅 | 匿名投稿
您的位置:网站首页 > 加密 > 正文

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

作者:admin 来源: 日期:2014/8/5 0:36:39 人气: 标签:

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.  

读完这篇文章后,您心情如何?
0
0
0
0
0
0
0
0
本文网址: