![]() |
AW: DEC Design Frage (SHA3)
Seltsam.
Habe den Code jetzt korrigiert, die bisherigen Unittests laufen auch sauber durch. Sieht jetzt so aus:
Delphi-Quellcode:
Nur, dein neuer Testvektor liefert ein anderes Ergebnis als das von dir gepostete.
procedure THash_SHA3Base.Calc(const Data; DataSize: Integer);
var DataPtr : PByte; RoundSize : UInt32; const // Maximum number of bytes one can process in one round MaxRoundSize = MaxInt div 8; begin // due to the way the inherited calc is constructed it must not be called here! if (DataSize > 0) then begin DataPtr := PByte(@Data); while (UInt32(DataSize) > 0) do begin RoundSize := DataSize; if (RoundSize > MaxRoundSize) then RoundSize := MaxRoundSize; Absorb(DataPtr, RoundSize * 8); Dec(DataSize, RoundSize); Inc(DataPtr, RoundSize); end; end else FinalStep; end; Hier der AUszug aus der SHA3_224.SetUp Methode mit dem neuen Vektor. Der Wert für ExpectedOutputUTFStrTest stimmt nicht, solange aber schon für ExpectedOutput was falsches raus kommt brauche ich den noch nicht anzupassen.
Delphi-Quellcode:
Meldung von DUnit:
lDataRow := FTestData.AddRow;
lDataRow.ExpectedOutput := 'f7fc914c8fe4827d866b02df2459840260f4adb0db4deb9fa661756c'; lDataRow.ExpectedOutputUTFStrTest := '0f1ad8cd5a85fe68319b67427e1f0b685498bc246a81a1f595c89e4e'; lDataRow.AddInputVector(RawByteString('e21et2e2et1208e7t12e07812te08127et1028e7t1208e7gd81d872t178r02tr370823' + 'e21et2e2et1208e7t12e07812te08127et1028e7t1208e7gd81d872t178r02tr370823' + 'e21et2e2et1208e7t12e07812te08127et1028e7t1208e7gd81d872t178r02tr370823' + 'e21et2e2et1208e7t12e07812te08127et1028e7t1208e7gd81d872t178r02tr370823' + 'e21et2e2et1208e7t12e07812te08127et1028e7t1208e7gd81d872t178r02tr370823' + 'e21et2e2et1208e7t12e07812te08127et1028e7t1208e7gd81d872t178r02tr370823' + 'e21et2e2et1208e7t12e07812te08127et1028e7t1208e7gd81d872t178r02tr370823' + 'e21et2e2et1208e7t12e07812te08127et1028e7t1208e7gd81d872t178r02tr370823' + 'e21et2e2et1208e7t12e07812te08127et1028e7t1208e7gd81d872t178r02tr370823' + 'e21et2e2et1208e7t12e07812te08127et1028e7t1208e7gd81d872t178r02tr370823' + 'TurboMagic')); "TestCalcRawByteString: ETestFailure at $006D7C6D Index: 3 - expected: <f7fc914c8fe4827d866b02df2459840260f4adb0db4deb9fa 661756c> but was: <f912f9fcba30ec218d9fc4b682a5ac3457635be038d08a8af 5f44241>" Was läuft da falsch? Grüße TurboMagic |
AW: DEC Design Frage (SHA3)
Im Entwicklungszweig ist jetzt übrigens (das Unit Test Problem besteht weiterhin) der Start
einer neuen Zwischenbasisklasse für bitweise Hashes. |
AW: DEC Design Frage (SHA3)
Zitat:
Du fragst, was falsch läuft... ? Ich laufe falsch. Ich sollte mehr schlafen und weniger posten - oder wenn doch, dann nur vollständigen Code und nicht Auszüge. Ich habe deine neuste Version gerade jetzt geladen. Auch meine Testnachricht wird von deiner Funktion korrekt "gehasht". (Ich sehe gerade, dass in der soeben heruntergeladenen DEC von github immer noch die alte procedure THash_SHA3Base.Calc() drin ist. Hab's soeben mit deiner hier geposteten laufen lassen - auch ok.) Das s := s+s+s ging verloren. So sieht's aus:
Delphi-Quellcode:
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 10 do s := s + 'e21et2e2et1208e7t12e07812te08127et1028e7t1208e7gd81d872t178r02tr370823'; s := s + 'TurboMagic'; s := s + s + s; writeln( length(s).ToString ); writeln( s ); s := WE.CalcString(s, TFormat_HexL); WriteLn(s); writeln( s = 'f7fc914c8fe4827d866b02df2459840260f4adb0db4deb9fa661756c' ); finally WE.Free; end; ReadLn; |
AW: DEC Design Frage (SHA3)
Danke!
Habe das übernommen und jetzt passt das! Meine Änderungen sind übrigens im Entwicklugnszweig. und ja: richtig Schlafen hilft oft! ;-) Grüße TurboMagic |
AW: DEC Design Frage (SHA3)
Punkto Speed.
Hast du dies hier mal angeschaut: ![]() oder ist es vielleicht bereits eingebaut (?). |
AW: DEC Design Frage (SHA3)
Hallo,
1. Ich habe jetzt bis auf einen Unit Test den ich mir noch anschauen muss (Zeit läuft mal wieder weg) die bitweise Geschichte mal eingebaut. Man muss dazu FinalBitLength auf die Bitzahl des letzten Byte setzen und als Größe, falls ein solcher Parameter exisitiert,die Byteanzahl inkl. des unvollständigen letzten Byte. 2. Zum Thema Geschwindigkeit: darum hab' ich mich noch kein bisschen gekümmert. Zuerst muss mal die gerade in Arbeit befindliche Integration funktionieren. Dann können wir zusammen auch das andere angehen. 3. Der bisherigen Integration fehlt auch noch die Umsetzung einiger weiterer Testvektoren als Unittests. Das kommt schrittweise auch noch. Grüße TurboMagic |
AW: DEC Design Frage (SHA3)
Wenn du richtig viel Speed willst, baust du dir eh SHA3-Hardware ;-). [Sehr wahrscheinlich gibt es viel schnellere, als jene, welche man im Netz findet. Falls jemand hier beim BND o.ä. arbeitet: Wie schnell sind eure Lösungen?]
Auf ![]() wird ![]() Ich nehme mal an, dass du das nicht auch bist. Mit diesem Paket könntest du automatisiert Testvektoren durchrechnen lassen und mit deinen Werten vergleichen. (Viele Vektoren musst du ja nicht rechnen lassen.) Der Download von Herrn Grange (siehe #25 - der mit dem schnellen Absorb) klappte heute nicht, die haben genau heute "maintenance". Deine aktuelle SHA3 hat mehr Durchsatz als die oben verlinkte. Die oben verlinkte SHA3_224 Throughput: 34.10 MB/s with Blocks of 64 KB Deine: 52MB/s SHA3_256 Throughput: 36.25 MB/s with Blocks of 64 KB Deine: 52MB/s SHA3_512 Throughput: 19.98 MB/s with Blocks of 64 KB Deine: 28MB/s |
AW: DEC Design Frage (SHA3)
DEC selber, das ursprüngliche wurde von "einem" schlauen Typen (negaH / Hagen Reddmann) privat entwickelt, der aber vor ganzen eine Weile mit Delphi aufhörte. :cry:
Und so weit ich weiß, waren seine Implementationen oft die Schnellsten, von einem Privat-Entwickler. (nur ein paar kommerzielle/staatliche professionelle Entwicklergruppen waren teilweise etwas schneller) |
AW: DEC Design Frage (SHA3)
Zitat:
Der Link bei #25 führt zu einer Webseite (*Wolfgang Erhardts DEC wird erwähnt) mit Permutationscode von Eric Grange, welcher offenbar schneller ist als DECHash.THash_SHA3Base.KeccakPermutation(var state: TState_L); Allgemein und nicht speziell für diesen Code: Kennst du Software, welche einfachen Code wie unter DECHash.THash_SHA3Base.KeccakPermutation(var state: TState_L); automatisch analysiert und punkto Speed optimieren kann? (abhängig von der Hardware-Umgebung, vom möglichen Input,...) Und schreib jetzt nicht Compiler ;-)) |
AW: DEC Design Frage (SHA3)
Hallo,
1. Der Benchmark bezieht sich auf diese hier, oder? ![]() 2. An der bin ich nicht beteiligt, die enthält aber ein paar Algorithmen (ich rede jetzt nicht von den nicht kryptographischen) die in DEC noch fehlen. Aber eins nach dem anderen. 3. Der ursprüngliche Autor der DEC war Haagen Redmann. Ist der gestorben? Der hatte irgendwann einfach kein Interesse mehr daran. Die DEC ging dan auf Assertor (Frederik Winkelsdorf, Freelancer aber leider nicht mehr im Delphi Umfeld) über und dann bin ich eingestiegen und habe nauch einiger Zeit der "Betreuung" meines Tuns durch Frederik die DEC dann ganz übernommen, freue mich aber genre über weitere unterstützer, da auch meine Zeit und Kenntnisse endlich sind. 4. Der Autor der eingebauten SHA3 Lösung war der tatsächlich gestorbene Wolfgang Erhardt. So und ich mach mich jetzt an ein paar Formatierungsverbesserungen und in der SHA3Base sind glaube ich auch noch ein paar Sachen public die eher private/protected sein sollten... Grüße TurboMagic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 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