AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen

Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen

Ein Thema von TurboMagic · begonnen am 6. Jan 2021 · letzter Beitrag vom 10. Jan 2021
Antwort Antwort
Seite 1 von 2  1 2   
TurboMagic

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

Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen

  Alt 6. Jan 2021, 08:44
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:
https://github.com/chadilukito/www.wolfgang-ehrhardt.de

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.753 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen

  Alt 6. Jan 2021, 10:11
.. die Datei t_hmsha3.pas nach t_hmsha3.dpr umbenannt.
Als std.inc -> {$i ..\..\misc\util\std.inc}

Suchpfad: Pfad zu \www.wolfgang-ehrhardt.de\src\crc-hash\crc_hash
Im Mem_Util zwei Zeilen (239, 291) auskommentiert.

Code:
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
compiliert und läuft
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
TurboMagic

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

AW: Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen

  Alt 6. Jan 2021, 10:26
Danke!
Werde ich in ein paar Minuten testen.
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
414 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen

  Alt 6. Jan 2021, 15:12
zum Thema Hash SHA-3_512 habe ich mit Bezug auf W. Ehrhard nachfolgenden Beitrag gefunden:
https://www.delphipraxis.net/194851-...-ehrhardt.html
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;
Norbert
  Mit Zitat antworten Zitat
TurboMagic

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

AW: Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen

  Alt 6. Jan 2021, 21:07
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.
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
414 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen

  Alt 7. Jan 2021, 13:33
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.
Norbert
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
414 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen

  Alt 7. Jan 2021, 16:50
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.
Angehängte Dateien
Dateityp: zip SHA3_224Demo.zip (60,0 KB, 6x aufgerufen)
Norbert
  Mit Zitat antworten Zitat
TurboMagic

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

AW: Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen

  Alt 7. Jan 2021, 17:40
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
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
414 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen

  Alt 7. Jan 2021, 18:52
ich glaube, da liegst du richtig mit 144 byte:
Delphi-Quellcode:
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;
an anderer Stelle:
Delphi-Quellcode:
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;
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
(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.
Norbert
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
458 Beiträge
 
#10

AW: Hash mit Wolfgang Erhardt's Bibliotheken zum Laufen bekommen

  Alt 7. Jan 2021, 21:17
Ich weis nicht, ob euch die mORMot Crypto Unit bekannt ist. Dort findet sich zu SHA-3 unter anderem folgende Anmerkung:
Code:
  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
Ist vielleicht einen Blick wert.

Bis bald...
Thomas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz