Einzelnen Beitrag anzeigen

TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.815 Beiträge
 
Delphi 12 Athens
 
#8

AW: DEC Design Frage (SHA3)

  Alt 13. Mai 2021, 17:23
Hallo,

was ich tue ist im Development (und seit eben auch im Master) Branch dieses
Repositories zu finden:

https://github.com/MHumm/DelphiEncryptionCompendium

Als Beispiel kann der Unit Test mit dem originalen 1600 Bit NIST Testvektor
von A3 dienen. Beim SHA3-224 habe ich als Blockgröße 144 Byte drin, womit die
200 Byte des Testvektors größer wären als die Blockgröße.

Meine Schleife funktioniert in sofern, dass als Ergebnis auch der vom NIST
publizierte raus kommt.

So wie der ursprüngliche Code von W. Erhardt geschrieben war, musste man ja immer
die länge der zu verarbeitenden Daten in Bit angeben, was bei größeren Datenmengen
evtl. nicht ausgericht hätte, da man dann maximal MaxInt div 8 Byte verarbeiten
könnte.

Richtig?
Ich habe nur in Herrn Erhardts (un den kann man ja leider nicht mehr fragen) Code
nichts gesehen was diese Fälle behandelt hätte, daher die Schleife.

Zu der Stream Idee: die DEC bietet bereits Stream basierte Methoden, aber eben
nicht nur. Und alle Methoden rufen intern die Calc Methode auf, in welcher ich jetzt
die Schleife umgesetzt habe.

Hier ein etwas einfacheres Testprogramm als die Unit Tests:
Delphi-Quellcode:
program Hash_Console;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  DECFormat,
  DECHash;

var
  s : RawByteString;
  WE : THash_SHA3_224;
begin
  WE := THash_SHA3_224.Create;
  try
    WriteLn('SHA3 224 Test');
    s := '';

    for var i := 1 to 200 do
      s := s + #$A3;

    s := WE.CalcString(s, TFormat_HexL);
    WriteLn(s);
  finally
    WE.Free;
  end;

  ReadLn;
end.
Korrektes Ergebnis (NIST) ist dieses:
9376816aba503f72f96ce7eb65ac095deee3be4bf9bbc2a1cb 7e11e0

Grüße
TurboMagic
  Mit Zitat antworten Zitat