问题描述
我正在尝试使用弹性城堡 bcprov-jdk15on-1.66.jar 从D:\ Users \ xxxxx \ AppData \ Roaming \ gnupg \ private-keys-v1.d加载密钥。
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.bouncycastle.gpg.SExprParser;
import org.bouncycastle.openpgp.PGPException;
import org.bouncycastle.openpgp.PGPSecretKey;
import org.bouncycastle.openpgp.operator.PBEProtectionRemoverFactory;
import org.bouncycastle.openpgp.operator.PGPDigestCalculatorProvider;
import org.bouncycastle.openpgp.operator.jcajce.JcaKeyFingerprintCalculator;
import org.bouncycastle.openpgp.operator.jcajce.JcaPGPDigestCalculatorProviderBuilder;
import org.bouncycastle.openpgp.operator.jcajce.JcePBEProtectionRemoverFactory;
import org.bouncycastle.util.encoders.Hex;
public class LoadKey {
public static void main(String[] args) throws IOException,PGPException {
String filePath = "D:\\Users\\XXXX\\AppData\\Roaming\\gnupg\\private-keys-v1.d\\4B8379C14DED7818D546E3C4AF7F1D0DF5716BCD.key";
String pass = "siv_test";
PGPDigestCalculatorProvider calculatorProvider = new JcaPGPDigestCalculatorProviderBuilder()
.build();
PBEProtectionRemoverFactory passphraseProvider = new JcePBEProtectionRemoverFactory(
pass.toCharArray());
InputStream in = new FileInputStream(filePath);
PGPSecretKey key =
new SExprParser(calculatorProvider).parseSecretKey(
new BufferedInputStream(in),passphraseProvider,new JcaKeyFingerprintCalculator());
System.out.println("Found key "
+ Hex.toHexString(key.getPublicKey().getFingerprint()));
}
}
但是我得到了
线程“主”中的异常java.io.IOException:遇到未知字符:K 在org.bouncycastle.gpg.SXprUtils.skipOpenParenthesis(来源不明) 位于org.bouncycastle.gpg.SExprParser.parseSecretKey(未知来源)
gpg(GnuPG)2.2.23
libgcrypt 1.8.6
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)