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


本文整理自网络,侵删。

 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.  

相关阅读 >>

Delphi vcl 在trichedit控件中设置wordwrap属性后无法自动换行的问题

Delphi实现自我删除

Delphi二分查找算法(预排序数组的查找)

Delphi木马生成技术

Delphi通过loadlibrary调用其他动态库

Delphi检查程序内存泄露 checkmem.pas

Delphi中使用isuperobject解析json数据

Delphi文件 fileopen 、fileseek等的用法(看红色字体)

Delphi format中的换行符号是什么

Delphi memo1双击选中的文字内容

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...