Hi, ich habe ein kleines Problem damit, dass ich mit Delphi 7 und
DEC 5.1 eine Datei verschlüsseln (AES oder Blowfish) und mit Java/JCA die Datei wieder entschlüsseln möchte. Allerdings sind bisher alle Versuche gescheitert. Ich bekomme einfach die Datei nicht wieder entschlüsselt. Hat jemand schonmal Erfahrung mit der plattformübergreifenden Verschlüsselung mittels
DEC?
Mein Delphi-Code sieht wie folgt aus:
Delphi-Quellcode:
RegisterDECClasses([TCipher_Rijndael, THash_SHA1]);
AMode := cmCTSx;
ACipher := TCipher_Rijndael;
Source := TFileStream.Create('origfile.zip', fmOpenReadWrite);
try
Dest := TFileStream.Create('encfile.enc', fmCreate);
try
with ACipher.Create do
try
Mode := AMode;
Init(#1#2#3#4#5#6#7#8#9#10#11#12#13#14#15#16);
EncodeStream(Source, Dest, Source.Size);
finally
Free;
end;
finally
Dest.Free;
end;
//ProtectStream(Source);
finally
Source.Free;
end;
Der vollständigkeithalber hier noch der Java-Code, den ich zur Entschlüsselung nutze:
Delphi-Quellcode:
byte[] key =
{ (byte)1,(byte)2,(byte)3,(byte)4,(byte)5,(byte)6,(byte)7,(byte)8,(byte)9,(byte)10,(byte)11,(byte)12,(byte)13,(byte)14,(byte)15,(byte)16 };
SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
// Instantiate the cipher
try {
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
InputStream in = new FileInputStream(new File("encfile.enc"));
OutputStream out = new CipherOutputStream(new FileOutputStream(new File("new.zip")), cipher);
byte[] dec = new byte[8192];
int n;
while(( n = in.read( dec )) > 0 ) {
out.write( dec, 0, n );
}
in.close();
out.close();
} catch (
Exception e)
{
e.printStackTrace();
}
Fällt euch etwas ein, was da nicht passt? Beide Codes erzeugen eine Datei mit der richtigen Größe, aber nicht mit dem richtigen Inhalt... Ich habe es mit AES und Blowfish versucht, aber irgendwie passt es nicht.
Danke.
Gruß, Stefan