Java Bouncycastle PGP加密错误密钥大小非法

Java Bouncycastle PGP加密错误密钥大小非法,java,macos,encryption,bouncycastle,pgp,Java,Macos,Encryption,Bouncycastle,Pgp,我目前正在用java编写一个加密消息传递服务,并使用bouncycastle PGP库。我已经编写了一个测试程序,可以生成密钥对,并对消息进行加密/解密。这是工作了一段时间,但它最近停止在解密阶段,给我一个InvalidKeyException 我做了一些研究,下载了JCE.jar文件并将它们导入到我的项目中(通过Eclipse项目->属性->添加外部jar)。我看到对于windows用户,他们应该被放在java库中的一个特定文件夹中,但我在Mac上找不到类似的文件夹。我试着在usr/libra

我目前正在用java编写一个加密消息传递服务,并使用bouncycastle PGP库。我已经编写了一个测试程序,可以生成密钥对,并对消息进行加密/解密。这是工作了一段时间,但它最近停止在解密阶段,给我一个InvalidKeyException

我做了一些研究,下载了JCE.jar文件并将它们导入到我的项目中(通过Eclipse项目->属性->添加外部jar)。我看到对于windows用户,他们应该被放在java库中的一个特定文件夹中,但我在Mac上找不到类似的文件夹。我试着在usr/library文件夹中查找,但找不到任何有用的东西

有人在Mac上解决了这个问题吗

编辑:下面是我的主要测试函数中的一些代码

// decrypt
byte[] decrypted = PGPEncryptDecrypt.decrypt(encFromFile, secKey, pass.toCharArray());
这是我的decrypt方法(这不是我写的,但我制作了一个PGPEncryptDecrypt类来保存相关的静态方法,它对我很有用)

错误指向findSecretKey(在PGPEncryptDecrypt类中)方法,如下所示

public static PGPPrivateKey findSecretKey(
        PGPSecretKeyRingCollection pgpSec, long keyID, char[] pass)
        throws PGPException, NoSuchProviderException {
    PGPSecretKey pgpSecKey = pgpSec.getSecretKey(keyID);

    if (pgpSecKey == null) {
        return null;
    }

    return pgpSecKey.extractPrivateKey(pass, "BC");
}

当我第一次实现这些函数时,它们都工作得很好,但是它们停止了工作。

对于其他人来说,我在仔细研究后找到了答案

我所做的是打开终端,输入根库(作为sudo),找到合适的java库,并将下载文件夹手动复制到合适的java安全文件夹中

路径是Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/security


然后在那里,我执行了两个cp filename命令来复制相应的文件

请为引发异常的部分添加一些代码
public static PGPPrivateKey findSecretKey(
        PGPSecretKeyRingCollection pgpSec, long keyID, char[] pass)
        throws PGPException, NoSuchProviderException {
    PGPSecretKey pgpSecKey = pgpSec.getSecretKey(keyID);

    if (pgpSecKey == null) {
        return null;
    }

    return pgpSecKey.extractPrivateKey(pass, "BC");
}