0

我一直在尝试使用 BouncyCastle 的 JCE 提供程序加密一些数据。我正在尝试“SHA256withRSA”,但得到了“noSuchAlgorithmException”。难道我做错了什么?有人可以帮忙吗?谢谢

具体来说,我正在尝试

Signature.getInstance("SHA256withRSA", new BouncyCastleProvider());

如此处所述 - http://www.bouncycastle.org/wiki/display/JA1/X.509+Public+Key+Certificate+and+Certification+Request+Generation

4

3 回答 3

2

试试这个:

Signature.getInstance("SHA256withRSA", "BC");

在我见过的大多数示例中,第二个参数都有一个字符串被传入,而不是提供者本身。

getInstance 方法似乎支持传入提供程序,但也许只是这样做

 new BouncyCastleProvier()

没有正确构造它,导致缺少算法。我怀疑通过传递“BC”字符串,它将使用 JCA/JCE 中已经构建的提供程序。

参考:http ://docs.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#ProviderImplReq

于 2013-08-07T18:29:15.897 回答
0

也许这是选择供应商的问题。

我看到标准的 SunJSSE Provider 支持 SHA1withRSA,但不支持 SHA256withRSA。

在你的代码的某个地方你有这样的东西:

sigGen = new JcaContentSignerBuilder("SHA1withRSA").setProvider("BC").build(privKey);
于 2013-08-06T12:31:44.540 回答
0

首先添加提供者

java.security.Security.addProvider(new BouncyCastleProvider());

接着

Signature.getInstance("SHA256withRSA", "BC");
于 2017-03-17T20:35:46.627 回答