2017-03-22 14 views
1

私が使用してLinux上でテキストファイル暗号化されてきたよ:JavaでAES256で暗号化されたファイルをGnuPGで解読する方法は?

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

パスフレーズを要求するコマンドを、我々はここに「123」と入力しましょう。

このファイルには自明復号化することができます。

gpg -d file.txt.gpg 

今、私はJavaでこのファイルを復号化したいが、非常にパスフレーズを使用して、これを行う方法を見つけることができない「123」。具体的には、塩と初期ベクトルが何であるか、それ以外に必要なものは完全には明らかではありません。

+0

はGPGのマニュアルを参照してください/またはコード。 – zaph

答えて

4

GnuPGはJavaのネイティブクラスによって直接サポートされていないOpenPGPプロトコルを実装しています。 OpenPGPはown file formatですが、slightly different variant of the CFB modeも使用しています。

自分ですべてを実装するのではなく、Bouncy Castle libraryに行ってください。それは、(使用されるアルゴリズムパラメータを決定するためにいくつかのより多くのコードと圧縮も連結の例で提供される)OutputStream outを復号化するために、それらの関連するコールに帰着example how to decrypt a symmetrically encrypted messageを提供し:及び

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

_Oracle_ Javaを使用している場合、AES-256は無制限強度管轄権ポリシーをインストールする必要があります。 –

+1

それはうまくいくように見えましたが、実際には無効なパディングに関する例外があります。これを約72時間まっすぐに続けた後、私はそれをあきらめることに決めました。誰かを助けるかもしれないとして私はあなたのポストをupvoted、それは私のために個人的に動作しなかったのでそれを受け入れることはできません。 –

関連する問題