Zitat:
Delphi-Quellcode:
absorb_bytes := DataSize;
if absorb_bytes > prorunde then absorb_bytes := prorunde;
Also mathematisch ein
absorb_bytes := Min(DataSize, {prorunde}BlockSize);
Genau.
Es ist und war mir voll bewusst, dass man eine min Funktion schreiben könnte (hatte ich sogar während dem Testen). Oder in DECHash die
Unit Math einbinden kann. Ich bin kein Fan, von Funktionsaufrufen, wo's keine braucht. Wer hier mit Lesbarkeit argumentiert, muss sich eine Hirnbrille kaufen. Also besten Dank für deinen grandiosen Hinweis
.
Blocksize (dein Code). Geht zwar auch (prorunde ist in [1 bis maxint div 8] frei wählbar, BlockSize hingegen ist in DECHash definiert und eine feste Grösse abhängig vom verwendeten Zustandsvektor (5 Worte zu l Bit (hier 6)) und von n (hier 224)).
Wenn du dir function THash_SHA3Base.Absorb(Data: Pointer; DatabitLen: Int32): Int32; anschaust ist BlockSize im Gegensatz zu meiner früheren Behauptung (als ich den Code noch nicht kannte) nicht Wert der Wahl.