Java 使用BouncyCastle的SHA2RSA加密
我一直在尝试使用BouncyCastle的JCE提供程序加密一些数据。我正在尝试“SHA256withRSA”,我得到了一个“noSuchAlgorithmException”。我做错什么了吗?有人能帮忙吗?谢谢 具体地说,我正在努力Java 使用BouncyCastle的SHA2RSA加密,java,security,bouncycastle,jce,Java,Security,Bouncycastle,Jce,我一直在尝试使用BouncyCastle的JCE提供程序加密一些数据。我正在尝试“SHA256withRSA”,我得到了一个“noSuchAlgorithmException”。我做错什么了吗?有人能帮忙吗?谢谢 具体地说,我正在努力 Signature.getInstance("SHA256withRSA", new BouncyCastleProvider()); 如本文所述-这可能是选择提供商的问题 我看到标准的SunJSSE提供程序支持带有RSA的SHA1,但不支持带有RSA的SHA2
Signature.getInstance("SHA256withRSA", new BouncyCastleProvider());
如本文所述-这可能是选择提供商的问题 我看到标准的SunJSSE提供程序支持带有RSA的SHA1,但不支持带有RSA的SHA256 您的代码中是否有类似的内容:
sigGen = new JcaContentSignerBuilder("SHA1withRSA").setProvider("BC").build(privKey);
请尝试以下方法:
Signature.getInstance("SHA256withRSA", "BC");
在我看到的大多数示例中,第二个参数与提供程序本身相比,有一个字符串正在传递
getInstance方法似乎支持传入一个提供程序,但可能只是这样做
new BouncyCastleProvier()
未正确构造它,导致缺少算法。我怀疑通过传递“BC”字符串,它将使用JCA/JCE中已构造的提供程序
参考:首先添加提供程序
java.security.Security.addProvider(new BouncyCastleProvider());
然后
Signature.getInstance("SHA256withRSA", "BC");
我不。很抱歉我缺乏知识。我不确定使用这种方式构建的“ContentSigner”与使用“签名”和使用私钥初始化之间的区别。我想不同的用例?我得到的重要部分是setProvider(“BC”)部分,它告诉JCA/JCE使用BouncyCastle提供程序。是的,我正在这么做。所以你认为BouncyCastle jce提供商一开始就没有SHA256withRSA?不,是的。我想确定你使用的是BouncyCastle提供程序。好的,我特别告诉它使用该提供程序。我不知道出了什么问题。非常感谢您花时间研究这个问题。您是在尝试加密还是生成签名?@praneeth varma您找到答案了吗?首先,我道歉。我不在城里,没有检查我的问题的答案。请不要弄错。说到问题。。。。。。成功了!。非常感谢。太棒了,很高兴听到。