Java Bouncycastle PGP加密错误密钥大小非法
我目前正在用java编写一个加密消息传递服务,并使用bouncycastle PGP库。我已经编写了一个测试程序,可以生成密钥对,并对消息进行加密/解密。这是工作了一段时间,但它最近停止在解密阶段,给我一个InvalidKeyException 我做了一些研究,下载了JCE.jar文件并将它们导入到我的项目中(通过Eclipse项目->属性->添加外部jar)。我看到对于windows用户,他们应该被放在java库中的一个特定文件夹中,但我在Mac上找不到类似的文件夹。我试着在usr/library文件夹中查找,但找不到任何有用的东西 有人在Mac上解决了这个问题吗 编辑:下面是我的主要测试函数中的一些代码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
// 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");
}