Einzelnen Beitrag anzeigen

gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#8

AW: SHA-3 von Wolfang Ehrhardt

  Alt 16. Jan 2018, 09:20
Du bist ein Opfer der Compiler-Magie gewerden. Nach der Deklaration Bytes : TBytes; ist Bytes (natürlich?) ein Pointer und mit @bytes berechnest Du nicht den Hash von Bytes sondern den Hash des Pointers (und der ändert sich in der Regel, weil ja die Speicheraddresse sich je nach Allokation ändert).

Mit der korrigierten Version
Delphi-Quellcode:
program t_dp_ex;
uses
  system.hash, system.sysutils,
  btypes, mem_util, hash, sha3_512;

{$i std.inc}

{$ifdef APPCONS}
  {$apptype console}
{$endif}

{-----------------------------------------}
function CreateHash(aString:string):string;
var
  Context : THashContext;
  Digist : TSHA3_512Digest;
  //bytes : Array of Byte;
  size : Integer;
  Bytes : TBytes;

begin
  SHA3_512Init(Context);
  size := aString.Length * SizeOf(Char);
  Bytes := TEncoding.Default.GetBytes(aString);
  SHA3_512Update(Context,bytes,size);
  SHA3_512Final(Context,Digist);
  result := Base64Str(@Digist,sizeof(Digist));
end;

begin
  writeln(CreateHash('abc1234'));
end.
Code:
erhalte ich immer das gleiche Ergebnis:
G:\CRC_HASH>t_dp_ex.exe
Zzvn3sQanFpmGDltaWoEMPBRm4tEtBzAP22pOKoe3X1TCY4VN5K8a0cFNWBDOYo8oNInfUYU/tNJWDFf
XXftyA==

G:\CRC_HASH>t_dp_ex.exe
Zzvn3sQanFpmGDltaWoEMPBRm4tEtBzAP22pOKoe3X1TCY4VN5K8a0cFNWBDOYo8oNInfUYU/tNJWDFf
XXftyA==

G:\CRC_HASH>t_dp_ex.exe
Zzvn3sQanFpmGDltaWoEMPBRm4tEtBzAP22pOKoe3X1TCY4VN5K8a0cFNWBDOYo8oNInfUYU/tNJWDFf
XXftyA==
Gruß Gammatester

Geändert von gammatester (16. Jan 2018 um 09:23 Uhr)
  Mit Zitat antworten Zitat