使用任意私钥块实例化 PGPPrivateKey 对象

问题描述

给定如下所示的 PGP 公钥块,如何使用该密钥实例化 BouncyCastle PGPPrivateKey 对象?

-----BEGIN PGP PRIVATE KEY BLOCK----
mQIlNBGBBZ2nr0M7Dlw9s7u8MlbZvkPviVQF4lNzQ5tSmGNT0QV/QuC8a/gQ
...
...
...
Bhn0TfXYINgO0fIj4CjIduDn1aoUcQ5gF2XuA==
=3U0p
-----END PGP PRIVATE KEY BLOCK-----

我发现了许多关于如何从 PGPSecretKeyRing 获取 PGPPrivateKey 的示例,但不幸的是,我是从上述格式的私钥开始的。我无法找到使用该数据实例化 PGPPrivateKey 或将数据放入 PGPSecretKeyRing 以便于提取方法

BouncyCastle 似乎不支持从 PRIVATE KEY BLOCK 格式转换为 Java 表示的一种方法,但我也不知道从哪里开始将它们转换为可用的格式.我已经使用 PGPObjectFactory 尝试了以下和类似版本的许多排列,但一直无法找到一种方法以 PGP 库知道如何使用的格式传递私钥块。

privateKeyInputStream = PGPUtil.getDecoderStream(new ByteArrayInputStream(privateKeyBytes));
    PGPSecretKeyRingCollection pgpSecretKeyRingCollection =
            new PGPSecretKeyRingCollection(privateKeyInputStream,new JcaKeyFingerprintCalculator() );
    Iterator keyRingIterator = pgpSecretKeyRingCollection.getKeyRings();
    while(keyRingIterator.hasNext()) {
        String className = keyRingIterator.next().getClass().getSimpleName();
        System.out.println("keyRingIterator object : " + className); // never called
    }

如何使用 PGP PRIVATE KEY BLOCK 提供的私钥解密 Java 代码中的文件

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)