我一直在尝试使用 BouncyCastle 的 JCE 提供程序加密一些数据。我正在尝试“SHA256withRSA”,但得到了“noSuchAlgorithmException”。难道我做错了什么?有人可以帮忙吗?谢谢
具体来说,我正在尝试
Signature.getInstance("SHA256withRSA", new BouncyCastleProvider());
我一直在尝试使用 BouncyCastle 的 JCE 提供程序加密一些数据。我正在尝试“SHA256withRSA”,但得到了“noSuchAlgorithmException”。难道我做错了什么?有人可以帮忙吗?谢谢
具体来说,我正在尝试
Signature.getInstance("SHA256withRSA", new BouncyCastleProvider());
试试这个:
Signature.getInstance("SHA256withRSA", "BC");
在我见过的大多数示例中,第二个参数都有一个字符串被传入,而不是提供者本身。
getInstance 方法似乎支持传入提供程序,但也许只是这样做
new BouncyCastleProvier()
没有正确构造它,导致缺少算法。我怀疑通过传递“BC”字符串,它将使用 JCA/JCE 中已经构建的提供程序。
也许这是选择供应商的问题。
我看到标准的 SunJSSE Provider 支持 SHA1withRSA,但不支持 SHA256withRSA。
在你的代码的某个地方你有这样的东西:
sigGen = new JcaContentSignerBuilder("SHA1withRSA").setProvider("BC").build(privKey);
首先添加提供者
java.security.Security.addProvider(new BouncyCastleProvider());
接着
Signature.getInstance("SHA256withRSA", "BC");