![]() |
AW: DEC Design Frage (SHA3)
Seufz!
Jetzt hab' ich mal testhalber für den SHA-224 ein paar der NIST Testvektoren von hier: ![]() in den Unit Test eingebaut (siehe Entwicklungszweig, aktueller Commit) und siehe da: alle schlagen fehl. Egal ob die Länge des Testvektors auf ganze Byte ausgeht oder auf einzelne Bits. Und nein, es schlagen nicht nur die UnicodeString Tests fehl, das wäre ja erklärbar und behebbar wenn die anderen Tests funktionierten. Es schlagen alle Tests fehl. Kann und will mir jemand helfen? Ich würde dafür ein Programm schreiben, welches die NIST Testdaten Dateien in DEC Unittests "umwandeln" kann. |
AW: DEC Design Frage (SHA3)
Hallo TM
ich hatte damals für diverse RawByteStrings DEC SHA3 Werte mit Werten von Online SHA3 Rechnern verglichen und dein DEC und die anderen Rechner hatten alle immer den gleichen SHA3 Output geliefert. Hast du noch was geändert seit damals (ausser dass du nun auch Bit basierte Vektoren als Input erlaubst)? Gruss M Soeben habe ich Grange und DEC geladen und für 300 RawByteStrings die SHA3-256 Hashwerte miteinander verglichen. DEC und Grange liefern immer den gleichen SHA3_256 Wert. Ich habe für den Test DECHash vom 17.5. verwendet. So habe ich getestet:
Delphi-Quellcode:
Zu NIST Bit-Testvektoren: Vielleicht hilft dies (?):
uses DWSSha3, DECFormat, DECHash;
function DEC( s : RawByteString ): RawByteString; var WE : THash_SHA3_256; begin WE := THash_SHA3_256.Create; // Wem try finally und Co hier fehlen: Behalt's für dich ;-) Result := WE.CalcString(s, TFormat_HexL); WE.free; end; function Grange( s : RawByteString ): RawByteString; begin Result := HashSHA3_256( s ); end; procedure TForm97.Button2Click(Sender: TObject); var okc : integer; begin s := ''; okc := 0; repeat inc( okc, integer(dec(s) = grange(s))); s := s + ansichar( random(256 ) ); until length(s) >= 300;; showmessage( okc.ToString ); end; Zitat:
In Datei NIST SHA3_256Short findest du Len = 22 Msg = 259028 Msg muss wahrscheinlich für DEC umgewandelt werden nach (noch nicht getestet) [ALgo siehe Link oben] Len = 22 Msg = 2590A0 und ergibt dann bei NIST wie hoffentlich bei DEC: MD = d5863d4b1ff41551c92a9e08c52177e32376c9bd100c611c60 7db840096eb22f Du schreibst allerdings, dass kein NIST Wert demjenigen von DEC entspricht. Für Testvektoren der Länge l, l mod 8 = 0 ist keine Umwandlung nötig; die Resultate von DEC und die tabellierten Werte von NIST sollten bereits jetzt ok sein. Du solltest für deine TestUnit eine Funktion schreiben, welche direkt die NIST Files einlesen und durchrechnen kann. Dann schreibst du weniger Text ;-). Ich teste zwei NIST Vektoren der Länge l, l mod 8=0: NIST SHA3_256Short Vektor: Len = 24 Msg = 2c4741 MD = 90f0c2039b0d8635f7e78ab90b26306fc2b39a388a877b3cd9 58d541eba2b158 DEC liefert: 90f0c2039b0d8635f7e78ab90b26306fc2b39a388a877b3cd9 58d541eba2b158 OK! Und LEN = 32 auch OK! |
AW: DEC Design Frage (SHA3)
Danke für den Hinweis mit der Bitreihenfolge!
Das ist bestimmt das Problem! Fühl! Hätte es vom A3 Testvektor eigentlich noch wissen müssen... Naja, das Konverterprogramm ist eh geplant. Muss Mal noch überlegen wie ich die Bits andersherum bekomme... Grüße und frohe Pfingsten TurboMagic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz