Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
19. Mai 2021
ähnlich wie für MD5?
Da gibt es schon vollständige Rainbowtables, mit jedem existierenden Hash, zu dem "irgendein" Passwort hinterlegt ist. (oder sogar Mehrere)
Du bekommst also nicht "dein" Passwort, sondern Igendeines, welches aber den selben Hash besitzt.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
14. Mai 2021
Na das ist ja blöd. So bekommt man doch nicht mit, wenn man irgendwo 'nen Offset falsch/vergessen hat. :shock:
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
14. Mai 2021
Keine Sorge, das ist eine Inline-Funktion, also der Compiler sollte den Aufruf entfernen.
System.Math.pas bindet auch kaum Code ein, außer einem SSE-Test und der SysUtils,
aber für die ordentliche Fehlerbehandlung sollte die SysUtils ja eh schon drin sein.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
14. Mai 2021
Also mathematisch ein
absorb_bytes := Min(DataSize, {prorunde}BlockSize); :stupid:
Joar, für den Test wäre es bestimmt besser, hier nicht mit dem Selben, sondern mit unterschiedlichen/gemischten Zeichen zu arbeiten. (s := s + Char(i + 35);)
Aber nur um die Schleife zu ersetzen, DupeString, StringOfChar oder string.Create (TStringHelper.Create).
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
13. Mai 2021
BlockSize erhöhen?
Ich denke mal das ist grade dafür da, um den gleichzeitig verwendeten Speicher zu begrenzen/partitionieren?
Gibt es nach der Schleife noch eine Behandlung für den "Rest"? (kleiner als Blocksize)
if UInt32(DataSize) >= BlockSize then // falls Absorb bei Size=0 nicht abraucht, dann könnte man das IF auch weglassen
begin
Absorb(Pointer(@Data), (UInt32(DataSize) div...