SExprParser.parseSecretKey:java.io.IOException:遇到未知字符:K

问题描述

我正在尝试使用弹性城堡 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 (将#修改为@)