2016-10-24 6 views
0

私はかなりJavaに慣れていません。 私は、UnixからGPGユーティリティを使用してパスワードを暗号化して保存したフラットファイルを持っています。今、システムに接続する前に、ファイルを読み込んでパスワードを文字列に変換したいと考えています。 私はポストGetting GPG Decryption To Work In Java (Bouncy Castle)を読んだが、PGPSecretKeyの前に@を付けてトークンなどを取り除くとエラーが出るので、プログラムを使用することはできません。 基本的に私のプロジェクトにJavaメソッドを入れる場所はわかりません。以下はGPGからJavaのフラットファイルを解読する

は私のコードです:あなたのコードをデバッグ

package jcpx.oracle.apps.gpg; 

import org.bouncycastle.apache.*; 
import org.bouncycastle.apache.bzip2.*; 
import org.bouncycastle.bcpg.*; 
import org.bouncycastle.bcpg.attr.*; 
import org.bouncycastle.bcpg.sig.*; 
import org.bouncycastle.openpgp.*; 

private PGPSecretKey readSecretKey(InputStream in) throws IOException, PGPException { 
in = PGPUtil.getDecoderStream(in); 
PGPSecretKeyRingCollection pgpSec = new PGPSecretKeyRingCollection(in, 
     new BcKeyFingerprintCalculator()); 

PGPSecretKey key = null; 
for (Iterator<PGPSecretKeyRing> it = pgpSec.getKeyRings(); key == null && it.hasNext();) { 
    PGPSecretKeyRing kRing = it.next(); 

    for (Iterator<PGPSecretKey> it2 = kRing.getSecretKeys(); key == null 
      && it2.hasNext();) { 
     PGPSecretKey k = it2.next(); 
     if ((keyId == null) && k.isSigningKey()) { 
      key = k; 
     } 
     if ((keyId != null) 
       && (Long.valueOf(keyId, 16).longValue() == (k.getKeyID() & MASK))) { 
      key = k; 
     } 
    } 
} 

if (key == null) { 
    throw new IllegalArgumentException("Can't find encryption key" 
      + (keyId != null ? " '" + keyId + "' " : " ") + "in key ring."); 
} 

return key; 
} 
+0

をあなたの問題の説明に_exact_エラーメッセージを投稿して確認してください。しばしば、小さくても完全な(実行可能な)例を提供することは、その問題を理解するのに役立ちます。 –

答えて

0

は、適切なコンテキスト(例えばエラー、入力ファイル)なしでは困難です。

あなたの質問がまだ開いている場合は、ここではこの答えを参照してください。https://stackoverflow.com/a/42652115/7550201

関連する問題