J'essaie de hacher une chaîne en utilisant la bibliothèque CRC/Hash de Wolfgang Ehrardt et j'essaie d'utiliser l'algorithme SHA3/256. j'ai écrit cette procédure:Comment hacher une chaîne avec SHA-3/256 avec Delphi XE8?
procedure TForm1.Button1Click(Sender: TObject);
var
Context : THashContext;
Digest: TSHA3_256Digest;
buf: TBytes;
s: string;
begin
buf := TEncoding.UTF8.GetBytes('');
SHA3_256Full(Digest, buf, SizeOF(buf));
s:=HexStr(@Digest, SizeOf(Digest)); //HexStr is in mem_utils unit from the same CRC/Hash library
memo1.lines.clear;
memo1.Lines.add(s);
end;
Le hachage est b64f67d4a6fe871afc5c42e3128b5e3b6943c475bab1a138667c0213e1f9a6bb mais il est différent du résultat obtenu par l'outil SHA-3/256 à http://emn178.github.io/online-tools/sha3_256.html, où la même chaîne donne 4e058e17199441d69589d3c775face0c4949af7f4f011317efce2fc22606c428.
De l'autre côté, si je tente de hachage d'une chaîne vide, le résultat est a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a qui est correct.
Donc la question est: est-ce que je fais une erreur dans mon code?
Lien direct vers la bibliothèque CRC/Hash de Wolfgang Ehrardt, juste pour être ici: http://www.wolfgang-ehrhardt.de/crchash_en.html – Nashev