Wenn du jetzt
TBytes
verwendest, muss hier
AES_CBC_Decrypt(@EncryptedData[1], @Res[1], length(EncryptedData), ctx);
auf jeden Fall der Index schonmal jetzt 0 sein - sowohl bei
EncryptedData
, als auch bei
Res
.
Die Zuweisung
ctx.IV := aesblck
ist überflüssig.
An dieser Stelle steht nicht der Key, sondern der IV!
Delphi-Quellcode:
FS.Seek($24, soBeginning);
SetLength(Key, 16);
FS.Read(Key[0], length(Key));
Auch würde ich
Res
definitiv nicht hardcoded auf 4096 Bytes festlegen. Vorher hattest du doch bereits einmal korrekt die Länge mit
FS.Size - $38
festgelegt. Wenn am Ende noch zufällige Daten stehen kann hier auch später die Dekompression evtl. fehlschlagen.
Wenn es danach immer noch nicht klappt, kann es natürlich durchaus sein, dass das Entschlüsseln bereits fehlschlägt (es werden zwar Daten entschlüsselt, aber ob die Blöcke später korrekt sind weißt du nicht - könnte man aber prüfen, indem man dem C# Programm beibringt mal einen Zwischenstand zu printen).