Thema: Delphi Probleme mit DCPcrypt

Einzelnen Beitrag anzeigen

gammatester

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

AW: Probleme mit DCPcrypt

  Alt 24. Mai 2018, 20:32
pps: Der Fehler ist das der Speicher überschrieben wird aber keine neue Länge bekommt.
Huh? Wo wird Speicher überschrieben?

Beim Verschlüsseln wird Data auf ein Vielfaches von 16 aufgefüllt (ohne Speicherüberschreibung).

Ich nehme ja wohl an, dass dieser verschlüsselte Text dann komplett wieder entschlüsselt wird. Da die Länge ein Vielfaches von 16 ist, kann er im CBC-Mode verarbeitet werden. Was übrigbleibt nach dem Entschlüsseln ist der Klartext+Padding, was noch entfernt werden muss.

Das Padding hängt n Bytes AnsiChar(n) an, wobei n = 16 - mod Klartextlänge ist. Mein Pseudocode macht das rückgängig.
Ersetze bei Dir   form1.Memo1.Lines.Add(Data); mit   form1.Memo1.Lines.Add(Trim(Data)); und dann passt es.
In der DecryptText() funktion, falls das unklar ist.
Das wäre natürlich tödlich, da zB auch #9, #10, #13 entfernt würden. Der komplette Ciphertext ist relevant.

Edit: Sehe gerade das über Base64 gegangen wird, da sollte trim kein Problem sein, weil im Base64 keine relevanten Nicht-Ansidaten vorhanden sind. Aber das kann nicht das Problem sein, weil DCPBase64.Base64DecodeStr(Data) einen Fehler werfen müsste, falls ungültige Zeichen auftauchen.

Geändert von gammatester (24. Mai 2018 um 20:48 Uhr) Grund: Base64
  Mit Zitat antworten Zitat