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