![]() |
Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen
Hallo,
ich habe vor ein paar Tagen begonnen die SHA3 Algorithmenfamilie unter Verwendung des Codes von Wolfgang Erhardt's Bibliotheken zu DEC hinzuzufügen. Jetzt ist sein Code halt gar nicht objektorientiert und ich kenne den Algorithmus nur ungenügend etc. Den Code hab' ich mal soweit mit kleineren Anpassungen (Formatierung, Objektorientierter und Änderung von TP Datentypen in Delphi Datentypen) portiert, nur schlägt schon der erste Unit Test fehl. Es kommt ein anderes Ergebnis raus. Daher würde ich gerne parallel meinen Code und seine Bibliothek debuggen können. Als ich neulich damit anfing, konnte ich sein Projekt aber nicht compilieren. Dass ich in der Std.inc Include Datei (die gibt's da auch mehrfach mit leicht unterschiedlicher Größe Yuck!) die aktuelle Delphi Version nachrüsten muss ok, aber dass er keine Units findet auch wenn ich die Ordner wo diese drin sind zum Such- und Bibliothekspfad hinzufüge? => Was muss ich alles tun um sein Hash-Demo Programm bzw. den Selbsttest den er drin hat zum Laufen zu bekommen? Eine wirkliche dafür hilfreiche Doku hab' ich auch nicht gefunden. Die Quelle von der ich alles bezogen habe ist diese: ![]() Grüße TurboMagic |
AW: Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen
.. die Datei t_hmsha3.pas nach t_hmsha3.dpr umbenannt.
Als std.inc -> {$i ..\..\misc\util\std.inc} Suchpfad: Pfad zu \ ![]() Im Mem_Util zwei Zeilen (239, 291) auskommentiert.
Code:
compiliert und läuft
HMAC-SHA3 tests - (c) 2015-2016 W. Ehrhardt
Test case 1: HMAC-SHA3-224: TRUE HMAC-SHA3-256: TRUE HMAC-SHA3-384: TRUE HMAC-SHA3-512: TRUE Test case 2: HMAC-SHA3-224: TRUE HMAC-SHA3-256: TRUE HMAC-SHA3-384: TRUE HMAC-SHA3-512: TRUE Test case 3: HMAC-SHA3-224: TRUE HMAC-SHA3-256: TRUE HMAC-SHA3-384: TRUE HMAC-SHA3-512: TRUE Test case 4: HMAC-SHA3-224: TRUE HMAC-SHA3-256: TRUE HMAC-SHA3-384: TRUE HMAC-SHA3-512: TRUE Test case 5: HMAC-SHA3-224: TRUE HMAC-SHA3-256: TRUE HMAC-SHA3-384: TRUE HMAC-SHA3-512: TRUE Test case 6: HMAC-SHA3-224: TRUE HMAC-SHA3-256: TRUE HMAC-SHA3-384: TRUE HMAC-SHA3-512: TRUE Test case 6a: HMAC-SHA3-224: TRUE HMAC-SHA3-256: TRUE HMAC-SHA3-384: TRUE HMAC-SHA3-512: TRUE Test case 7: HMAC-SHA3-224: TRUE HMAC-SHA3-256: TRUE HMAC-SHA3-384: TRUE HMAC-SHA3-512: TRUE Test case 7a: HMAC-SHA3-224: TRUE HMAC-SHA3-256: TRUE HMAC-SHA3-384: TRUE HMAC-SHA3-512: TRUE Test case 8: HMAC-SHA3-224: TRUE HMAC-SHA3-256: TRUE HMAC-SHA3-384: TRUE HMAC-SHA3-512: TRUE Grüße Klaus |
AW: Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen
Danke!
Werde ich in ein paar Minuten testen. |
AW: Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen
zum Thema Hash SHA-3_512 habe ich mit Bezug auf W. Ehrhard nachfolgenden Beitrag gefunden:
![]() Das Konsolenprogramm läßt sich compilieren.
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('Passwort1234567890')); Readln; |
AW: Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen
Danke, habe es jetzt soweit am laufen, dass ich
damit arbeiten kann. SHA3 Umsetzung in DEC wird aber noch etwas dauern. Die Tests werden noch nicht bestanden. |
AW: Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen
schau doch auch mal bei den cn-Packs vorbei (Examples\Crypt). Dort wird u. a. auch mit SHA3_224, SHA3_256, SHA3_384 und SHA3_512 operiert.
|
AW: Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen
Liste der Anhänge anzeigen (Anzahl: 1)
ich habe mal eine kleine Demo für die Hash-SHA3_224 Funktion erstellt. Sie enthält sowohl die Möglichkeit der Verarbeitung von Dateien für einen HashS SHA3_224 als auch die Möglichkeit der Anwendung eines HMAC (Authentifizierungscode für verschlüsselte Hash-Nachrichten oder Hash-basierter Nachrichtenauthentifizierungscode).
Die anderen Varianten des SHA3_224...512 sind daraus leicht ableitbar. |
AW: Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen
Hallo,
tja, cn pack wer' ich mir wohl auch anschauen müssen. Denn der SHA3 und auch wie er bei Wolfgang Erhardt umgesetzt ist (der kann aber evtl. gar nicht anders) sind doch etwas sperrig. Ich komme da nur sehr zäh vorwärts und muss außerdem die für die Hashes benutzte Unit Test Logik erweitern, die hat aber ein anderer Mitstreiter mal kräftig "Interfacifiziert" und da muss ich erstmal durchblicken wo ich da ansetzen muss/kann... Mal gespannt, ob cn pack strukturell da besser zur DEC Architektur passt. z.B. hab' ich gerade das Problem, dass ich beim SHA3 224 eine Blockgröße von 144 Byte definiert habe und die Calc Routine da erstmal nur Blöcke mit mind. 144 Byte verarbeiten will. Geht aber nicht, wenn der zu hashende String nur 3 Byte lang ist... W.E. hat als längsten Teststring einen 200 Byte langen benutzt (zumindest im von mir genutzten Programm, welches nicht das HMAC ist sondern nur SHA3) und multipliziert intern mal die Länge mit 8. Ich hab' noch nicht nachgeschaut, wie er mit seiner Update Funktion dann wirklich größere Datenmengen im MB/GB Bereich verarbeiten will... Liege ich mit meiner Blockgröße von 144 Byte für den SHA3-224 evtl. falsch? Wie wäre die dann richtig? Grüße TurboMagic |
AW: Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen
ich glaube, da liegst du richtig mit 144 byte:
Delphi-Quellcode:
an anderer Stelle:
type
TSHA3GeneralDigest = array[0..63] of Byte; TSHA3_224Digest = array[0..27] of Byte; TSHA3_256Digest = array[0..31] of Byte; TSHA3_384Digest = array[0..47] of Byte; TSHA3_512Digest = array[0..63] of Byte; TSHA3Context = packed record State: array[0..24] of Int64; Index: LongWord; DigestLen: LongWord; Round: LongWord; BlockLen: LongWord; Block: array[0..255] of Byte; Ipad: array[0..143] of Byte; {!< HMAC: inner padding } Opad: array[0..143] of Byte; {!< HMAC: outer padding } end;
Delphi-Quellcode:
Blöd ist nur, dass die Dateien leider nicht in engl. oder chinesisch vorliegen, sondern in einem mir unbekannten Format. Auch der Hinweis zur Übersetzung der Dateien
SHA3_ROUNDS = 24;
SHA3_STATE_LEN = 25; SHA3_224_OUTPUT_LENGTH_BYTE = 28; SHA3_256_OUTPUT_LENGTH_BYTE = 32; SHA3_384_OUTPUT_LENGTH_BYTE = 48; SHA3_512_OUTPUT_LENGTH_BYTE = 64; SHA3_224_BLOCK_SIZE_BYTE = 144; SHA3_256_BLOCK_SIZE_BYTE = 136; SHA3_384_BLOCK_SIZE_BYTE = 104; SHA3_512_BLOCK_SIZE_BYTE = 72; HMAC_SHA3_224_BLOCK_SIZE_BYTE = SHA3_224_BLOCK_SIZE_BYTE; HMAC_SHA3_256_BLOCK_SIZE_BYTE = SHA3_256_BLOCK_SIZE_BYTE; HMAC_SHA3_384_BLOCK_SIZE_BYTE = SHA3_384_BLOCK_SIZE_BYTE; HMAC_SHA3_512_BLOCK_SIZE_BYTE = SHA3_512_BLOCK_SIZE_BYTE; HMAC_SHA3_224_OUTPUT_LENGTH_BYTE = SHA3_224_OUTPUT_LENGTH_BYTE; HMAC_SHA3_256_OUTPUT_LENGTH_BYTE = SHA3_256_OUTPUT_LENGTH_BYTE; HMAC_SHA3_384_OUTPUT_LENGTH_BYTE = SHA3_384_OUTPUT_LENGTH_BYTE; HMAC_SHA3_512_OUTPUT_LENGTH_BYTE = SHA3_512_OUTPUT_LENGTH_BYTE; (TENU.BAT) ist nich wirklich hilfreich. Wenn es in chinesisch vorliegen würde, ginge es wirklich gut mit Deepl zu übersetzen - aber... Die maßgebliche Datei cnSHA3.pas liegt der Demo bei. Nur die wird gebraucht. Ich bin mal so kühn und empfehle eine Nachfrage bei den Autoren des CN-Packs (master At cnpack Dot org <> bzw. zjy At cnpack Dot org <>). Engisch sprechen die Jungs dort allemal. |
AW: Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen
Ich weis nicht, ob euch die
![]()
Code:
Ist vielleicht einen Blick wert.
TSha3Algo = (SHA3_224, SHA3_256, SHA3_384, SHA3_512, SHAKE_128, SHAKE_256);
... // - this implementation is based on Wolfgang Ehrhardt's and Eric Grange's, // with our own manually optimized x64 assembly Bis bald... Thomas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 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-2025 by Thomas Breitkreuz