Thema: Delphi Mini-SHA1

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#3

AW: Mini-SHA1

  Alt 15. Okt 2011, 20:09
Wo liegt mein Fehler?
Ersteinmal mußt du verstehen, was Hexadezumal und Base64 eigentlich ist.

Bei Base64 hat jedes "kodierte" Zeichen 64 Werte, wärend es bei Hexadezimal nur 16 Werte sind.
Außerdem ist dabei natürlich der kodierte String länger ... mehr Zeichen, da ja weniger Daten pro Zeichen vorhanden sind.
Base64 = 28 Zeichen (4 Zeichen pro 3 Byte)
Hex = 40 Zeichen (2 Zeichen pro Byte, also 6 Zeichen pro 3 Byte)

Du hast jetzt versucht 64 Werte auf ein 16-Zeichen Array loszulassen, was natürlich schief laufen muß.
PS: Schalte mal die Bereichsprüfung in deinen Projektoptionen an.
(und schon wäre dir das Problem von selber aufgefallen )

Und dann war natürlich der String zu kurz.

Delphi-Quellcode:
Class function TSHA1.toHex(Res: TSHA1Res): String;
  Const HexTable: array[0..15] of Char = '0123456789ABCDEF';

  Var A: packed array[0..19] of Byte absolute Res;
    i: Integer;

  Begin
    SetLength(Result, 40);
    Bor i := 0 to 19 do Begin
      Result[i * 2 + 1] := HexTable[A[i] shr 4];
      Result[i * 2 + 2] := HexTable[A[i] and 15];
    End;
  End;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (15. Okt 2011 um 20:23 Uhr)
  Mit Zitat antworten Zitat