我正在尝试使用 Bouncy Castle 进行一些 RSA 加密/解密。虽然一切正常,但我的解密功能中的输出已损坏。我认为这是由于调用算法时缺少适当的填充。
我已经安装了 Bouncy Castle,方法是将它 (bcprov-jdk15on-147.jar) 添加到我的类路径中,并将其安装在我的构造函数中,如下所示:
Security.addProvider( new BouncyCastleProvider() );
为了验证提供程序是否已安装,我调用了:
if (Security.getProvider( "BC" ) != null)
{
System.out.println( "Bouncy Castle provider is available" );
}
哪个按预期工作。
当我得到我的密码时,当我尝试使用算法“RSA”时,我得到了密文和损坏的明文。我知道我需要使用带有填充的算法,例如 PKCS 或其他算法,但以下获取密码的尝试因 NoSuchAlgorithm 异常而失败:
Cipher rsaCipher = Cipher.getInstance("RSA/NONE/PKCS1Padding", "BC");
不管我尝试什么其他方法,我能得到密码的唯一方法是如果我打电话:
Cipher rsaCipher = Cipher.getInstance("RSA", "BC");
为什么 PKCS 密码不可用?我已经安装了无限制的管辖权政策,正如我所说,普通的“RSA”有效,但填充调用没有。此外,我试图列出提供程序中的 Bouncy Castle 键,它看起来像是一个非常详尽的列表。
谁能帮我弄清楚为什么会丢失?
谢谢!埃文