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
EdAdvokat

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

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
3.079 Beiträge
 
Delphi 12 Athens
 
#2

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
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

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
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

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
3.079 Beiträge
 
Delphi 12 Athens
 
#5

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
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

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
482 Beiträge
 
#7

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

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 23:28 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