Entweder bin ich zu dumm dafür oder Delphi kann das nichtm (was ich nicht glaube).
Delphi-Quellcode:
AES_CBC_Init_Decr(keyBytes, 128, aesblck, ctx);
SetLength(Res, 4096); // irgendeine große Nummer weil ich keine Ahnung habe wie groß das Ergebnis sein soll?
AES_CBC_Decrypt(@EncryptedData[1], @Res[1], length(EncryptedData), ctx);
Ergebnis in einen TBytesStream schreiben, der dann von TZDecompressionStream auf die Festplatte geschrieben werden soll
Delphi-Quellcode:
BytesStream := TBytesStream.Create;
try
BytesStream.
Write(Res, Length(Res));
ZLibStream := TZDecompressionStream.Create(BytesStream);
try
OutputStream := TFileStream.Create('
dec.txt', fmCreate);
try
OutputStream.CopyFrom(ZLibStream, 0);
finally
OutputStream.Free;
end;
finally
ZLibStream.Free;
end;
finally
BytesStream.Free;
end;
Die Ausgabe ist immer leer. Ich habe vorher Res auf die Platte schreiben lassen ohne irgendetwas zu dekomprimieren. Da ist auch tatsächlich was drin. Sieht im Prinzip genau so aus wie die Eingangsdaten. Das muss dann noch dekomprimiert werden woran ich scheitere leider.
Das hier ist mein letzter Versuch. Die zweite showmessage erzeugt schon einen
data error. Jetzt gebe ich wohl oder übel auf.
Delphi-Quellcode:
BytesStream := TBytesStream.Create(Res);
try
ShowMessage(BytesStream.Size.ToString);
ZLibStream := TZDecompressionStream.Create(BytesStream);
try
ShowMessage(ZLibStream.Size.ToString);
OutputStream := TFileStream.Create('
dec.txt', fmCreate);
try
OutputStream.CopyFrom(ZLibStream, 0);
finally
OutputStream.Free;
end;
finally
ZLibStream.Free;
end;
finally
BytesStream.Free;
end;