2017-03-22 3 views
1

ich eine Textdatei auf Linux verschlüsselt haben mit:Wie entschlüsselt man in Java eine AES256 verschlüsselte Datei von GnuPG?

gpg --cipher-algo AES256 -c file.txt 

, die für eine Passphrase Befehl fragt, sagen wir, wir „123“ eingeben.

Diese Datei kann trivialer entschlüsselt:

gpg -d file.txt.gpg 

Jetzt möchte ich in Java diese Datei entschlüsseln, aber kann nicht ganz herausfinden, wie dies das Passwort „123“ mit zu tun. Insbesondere ist nicht ganz klar, was das Salz und der Ausgangsvektor ist und was sonst noch benötigt wird.

+0

die GPG Dokumentation Consult und/oder Code. – zaph

Antwort

4

GnuPG implementiert das OpenPGP-Protokoll, das nicht direkt von Java nativen Klassen unterstützen wird. OpenPGP hat seine own file format, sondern verwendet auch eine slightly different variant of the CFB mode.

Anstatt alles auf eigene Faust umzusetzen, gehen Sie besser für die Bouncy Castle library. Es bietet auch ein example how to decrypt a symmetrically encrypted message, die die entsprechenden Anrufe laufen darauf hinaus, einen OutputStream out zu entschlüsseln (einig mehr Code die verwendeten Algorithmus-Parameter und Kompression zu bestimmen, wird auch in dem verknüpften Beispiel vorgesehen):

PGPEncryptedDataGenerator encGen = new PGPEncryptedDataGenerator(
     new JcePGPDataEncryptorBuilder(algorithm).setSecureRandom(
      new SecureRandom()).setProvider("BC")); 
encGen.addMethod(
     new JcePBEKeyEncryptionMethodGenerator(passPhrase).setProvider("BC")); 
OutputStream encOut = encGen.open(out, compressedData.length); 
+1

Denken Sie daran, wenn mit _Oracle_ Java, AES-256 die Unlimited Strength Jurisidiction Politik erfordert installiert werden. –

+1

Das sah so aus, als sollte es funktionieren, aber in der Praxis habe ich immer noch Ausnahmen wegen ungültiger Auffüllung. Nachdem ich fast 72 Stunden daran gearbeitet habe, habe ich beschlossen, es aufzugeben. Ich habe Ihren Beitrag aufgepfropft, da er jemandem helfen kann, aber ich kann ihn nicht akzeptieren, da er für mich persönlich nicht funktioniert hat. –

Verwandte Themen