AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SHA-3 von Wolfang Ehrhardt

Ein Thema von Ghostwalker · begonnen am 16. Jan 2018 · letzter Beitrag vom 16. Jan 2018
Antwort Antwort
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: SHA-3 von Wolfang Ehrhardt

  Alt 16. Jan 2018, 11:24
Der oben angesprochene Fehler ist doch ein ziemlich eindeutiges Indiz.
Der Fehler hat eher was mit Wäldern und Bäumen zu tun, als mit irgend etwas anderem

Das in der Bibleothek ein Pointer und die Größe erwartet wird, ist völlig normal. Die Bibleothek soll
ja ein möglichst breites Publikum ansprechend und das bedingt verschiedene Comiler und Compilerversionen.

Btw. hier nun der entgültige Code, der, soweit ich das im Moment beurteilen kann, auch korrekt läuft.
Delphi-Quellcode:
  if (length(trim(ftoHash)) = 0) then exit;
  SHA3_512Init(fcontext);
  fbytes := TEncoding.GetEncoding('UTF-16').GetBytes(fToHash);
  fSize := TEncoding.GetEncoding('UTF-16').GetByteCount(fToHash);
  SHA3_512Update(fcontext,@fbytes[0],fsize);
  SHA3_512Final(fcontext,fdigist);
  fHash := Base64Str(@fdigist,sizeof(fdigist));
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#2

AW: SHA-3 von Wolfang Ehrhardt

  Alt 16. Jan 2018, 11:30
Btw. hier nun der entgültige Code, der, soweit ich das im Moment beurteilen kann, auch korrekt läuft.
Wie schon gesagt: Sicherheitshalber solltest Du SHA3_512UpdateXL benutzen.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#3

AW: SHA-3 von Wolfang Ehrhardt

  Alt 16. Jan 2018, 12:01
Das ist aber doch unnötig kompliziert, oder? (auch eine Art von Code-Obfuscation)
Delphi-Quellcode:
  fbytes := TEncoding.GetEncoding('UTF-16').GetBytes(fToHash);
  fSize := TEncoding.GetEncoding('UTF-16').GetByteCount(fToHash);
Warum nicht gleich so?
Delphi-Quellcode:
  
  fbytes := TEncoding.GetEncoding('UTF-16').GetBytes(fToHash);
  fSize := Length(fBytes);
Oder so?
Delphi-Quellcode:
  
  fbytes := TEncoding.Unicode.GetBytes(fToHash);
  fSize := Length(fBytes);
Wobei der ByteCount von Unicode auch wieder nur CharCount * SizeOf(Char) ist. TEncoding.Default ist von den aktuellen Windows-Einstellungen abhängig, also eher ungünstig. Etwas sparsamer und trotzdem allgemein gültig wäre da noch UTF8:
Delphi-Quellcode:
  
  fbytes := TEncoding.UTF8.GetBytes(fToHash);
  fSize := Length(fBytes);
Wenn die Hashes auch anderweitig verwendet werden, muss sowieso das Encoding bekannt gemacht werden. Sonst kann niemand was damit anfangen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:40 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