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通过进程id获取主窗句柄

Delphi webbrowser getelementbyid().innerhtml与getelementbyid().value的区别

Delphi 获取当前输入法

Delphi 关于选择文件路径 selectdirectory 弹出窗口居中的问题

Delphi thread.queue与synchronize的区别

Delphi 运行中申请uac权限

Delphi readln 读取一行文本

Delphi 将jpg图片上传到sqlserver数据库里

Delphi 把exe嵌入到自己的exe中。Delphi xe3

Delphi removedir 删除文件夹

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



打赏

取消

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

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

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

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

评论

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