delphi 10 Berlin System.Hash MD5 SHA1 SHA2 Hash  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi 10 Berlin System.Hash MD5 SHA1 SHA2 Hash


uses System.Hash;

function GetStrHashMD5(Str: String): String;

var

  HashMD5: THashMD5;

begin

    HashMD5 := THashMD5.Create;

    HashMD5.GetHashString(Str);

    result := HashMD5.GetHashString(Str);

end;

 

function GetStrHashSHA1(Str: String): String;

var

  HashSHA: THashSHA1;

begin

    HashSHA := THashSHA1.Create;

    HashSHA.GetHashString(Str);

    result := HashSHA.GetHashString(Str);

end;

 

function GetStrHashSHA224(Str: String): String;

var

  HashSHA: THashSHA2;

begin

    HashSHA := THashSHA2.Create;

    HashSHA.GetHashString(Str);

    result := HashSHA.GetHashString(Str,SHA224);

end;

 

function GetStrHashSHA256(Str: String): String;

var

  HashSHA: THashSHA2;

begin

    HashSHA := THashSHA2.Create;

    HashSHA.GetHashString(Str);

    result := HashSHA.GetHashString(Str,SHA256);

end;

 

function GetStrHashSHA384(Str: String): String;

var

  HashSHA: THashSHA2;

begin

    HashSHA := THashSHA2.Create;

    HashSHA.GetHashString(Str);

    result := HashSHA.GetHashString(Str,SHA384);

end;

 

function GetStrHashSHA512(Str: String): String;

var

  HashSHA: THashSHA2;

begin

    HashSHA := THashSHA2.Create;

    HashSHA.GetHashString(Str);

    Result := HashSHA.GetHashString(Str,SHA512);

end;

 

function GetStrHashSHA512_224(Str: String): String;

var

  HashSHA: THashSHA2;

begin

    HashSHA := THashSHA2.Create;

    HashSHA.GetHashString(Str);

    Result := HashSHA.GetHashString(Str,SHA512_224);

end;

 

function GetStrHashSHA512_256(Str: String): String;

var

  HashSHA: THashSHA2;

begin

    HashSHA := THashSHA2.Create;

    HashSHA.GetHashString(Str);

    Result := HashSHA.GetHashString(Str,SHA512_256);

end;

 

function GetStrHashBobJenkins(Str: String): String;

var

  Hash: THashBobJenkins;

begin

    Hash := THashBobJenkins.Create;

    Hash.GetHashString(Str);

    Result := Hash.GetHashString(Str);

end;

Examples calculating file hashes:


function GetFileHashMD5(FileName: WideString): String;

var

  HashMD5: THashMD5;

  Stream: TStream;

  Readed: Integer;

  Buffer: PByte;

  BufLen: Integer;

begin

  HashMD5 := THashMD5.Create;

  BufLen := 16 * 1024;

  Buffer := AllocMem(BufLen);

  try

    Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);

    try

      while Stream.Position < Stream.Size do

      begin

        Readed := Stream.Read(Buffer^, BufLen);

        if Readed > 0 then

        begin

          HashMD5.update(Buffer^, Readed);

        end;

      end;

    finally

      Stream.Free;

    end;

  finally

    FreeMem(Buffer)

  end;

  result := HashMD5.HashAsString;

end;

 

function GetFileHashSHA1(FileName: WideString): String;

var

  HashSHA: THashSHA1;

  Stream: TStream;

  Readed: Integer;

  Buffer: PByte;

  BufLen: Integer;

begin

  HashSHA := THashSHA1.Create;

  BufLen := 16 * 1024;

  Buffer := AllocMem(BufLen);

  try

    Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);

    try

      while Stream.Position < Stream.Size do

      begin

        Readed := Stream.Read(Buffer^, BufLen);

        if Readed > 0 then

        begin

          HashSHA.update(Buffer^, Readed);

        end;

      end;

    finally

      Stream.Free;

    end;

  finally

    FreeMem(Buffer)

  end;

  result := HashSHA.HashAsString;

end;

 

 

function GetFileHashSHA224(FileName: WideString): String;

var

  HashSHA: THashSHA2;

  Stream: TStream;

  Readed: Integer;

  Buffer: PByte;

  BufLen: Integer;

begin

  HashSHA := THashSHA2.Create(SHA224);

  BufLen := 16 * 1024;

  Buffer := AllocMem(BufLen);

  try

    Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);

    try

      while Stream.Position < Stream.Size do

      begin

        Readed := Stream.Read(Buffer^, BufLen);

        if Readed > 0 then

        begin

          HashSHA.update(Buffer^, Readed);

        end;

      end;

    finally

      Stream.Free;

    end;

  finally

    FreeMem(Buffer)

  end;

  result := HashSHA.HashAsString;

end;

 

function GetFileHashSHA256(FileName: WideString): String;

var

  HashSHA: THashSHA2;

  Stream: TStream;

  Readed: Integer;

  Buffer: PByte;

  BufLen: Integer;

begin

  HashSHA := THashSHA2.Create(SHA256);

  BufLen := 16 * 1024;

  Buffer := AllocMem(BufLen);

  try

    Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);

    try

      while Stream.Position < Stream.Size do

      begin

        Readed := Stream.Read(Buffer^, BufLen);

        if Readed > 0 then

        begin

          HashSHA.update(Buffer^, Readed);

        end;

      end;

    finally

      Stream.Free;

    end;

  finally

    FreeMem(Buffer)

  end;

  result := HashSHA.HashAsString;

end;

 

function GetFileHashSHA384(FileName: WideString): String;

var

  HashSHA: THashSHA2;

  Stream: TStream;

  Readed: Integer;

  Buffer: PByte;

  BufLen: Integer;

begin

  HashSHA := THashSHA2.Create(SHA384);

  BufLen := 16 * 1024;

  Buffer := AllocMem(BufLen);

  try

    Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);

    try

      while Stream.Position < Stream.Size do

      begin

        Readed := Stream.Read(Buffer^, BufLen);

        if Readed > 0 then

        begin

          HashSHA.update(Buffer^, Readed);

        end;

      end;

    finally

      Stream.Free;

    end;

  finally

    FreeMem(Buffer)

  end;

  result := HashSHA.HashAsString;

end;

 

function GetFileHashSHA512(FileName: WideString): String;

var

  HashSHA: THashSHA2;

  Stream: TStream;

  Readed: Integer;

  Buffer: PByte;

  BufLen: Integer;

begin

  HashSHA := THashSHA2.Create(SHA512);

  BufLen := 16 * 1024;

  Buffer := AllocMem(BufLen);

  try

    Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);

    try

      while Stream.Position < Stream.Size do

      begin

        Readed := Stream.Read(Buffer^, BufLen);

        if Readed > 0 then

        begin

          HashSHA.update(Buffer^, Readed);

        end;

      end;

    finally

      Stream.Free;

    end;

  finally

    FreeMem(Buffer)

  end;

  result := HashSHA.HashAsString;

end;

 

function GetFileHashSHA512_224(FileName: WideString): String;

var

  HashSHA: THashSHA2;

  Stream: TStream;

  Readed: Integer;

  Buffer: PByte;

  BufLen: Integer;

begin

  HashSHA := THashSHA2.Create(SHA512_224);

  BufLen := 16 * 1024;

  Buffer := AllocMem(BufLen);

  try

    Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);

    try

      while Stream.Position < Stream.Size do

      begin

        Readed := Stream.Read(Buffer^, BufLen);

        if Readed > 0 then

        begin

          HashSHA.update(Buffer^, Readed);

        end;

      end;

    finally

      Stream.Free;

    end;

  finally

    FreeMem(Buffer)

  end;

  result := HashSHA.HashAsString;

end;

 

function GetFileHashSHA512_256(FileName: WideString): String;

var

  HashSHA: THashSHA2;

  Stream: TStream;

  Readed: Integer;

  Buffer: PByte;

  BufLen: Integer;

begin

  HashSHA := THashSHA2.Create(SHA512_256);

  BufLen := 16 * 1024;

  Buffer := AllocMem(BufLen);

  try

    Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);

    try

      while Stream.Position < Stream.Size do

      begin

        Readed := Stream.Read(Buffer^, BufLen);

        if Readed > 0 then

        begin

          HashSHA.update(Buffer^, Readed);

        end;

      end;

    finally

      Stream.Free;

    end;

  finally

    FreeMem(Buffer)

  end;

  result := HashSHA.HashAsString;

end;

 

function GetFileHashBobJenkins(FileName: WideString): String;

var

  Hash: THashBobJenkins;

  Stream: TStream;

  Readed: Integer;

  Buffer: PByte;

  BufLen: Integer;

begin

  Hash := THashBobJenkins.Create;

  BufLen := 16 * 1024;

  Buffer := AllocMem(BufLen);

  try

    Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);

    try

      while Stream.Position < Stream.Size do

      begin

        Readed := Stream.Read(Buffer^, BufLen);

        if Readed > 0 then

        begin

          Hash.update(Buffer^, Readed);

        end;

      end;

    finally

      Stream.Free;

    end;

  finally

    FreeMem(Buffer)

  end;

  result := Hash.HashAsString;

end;


推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.1838481426239 seconds