我似乎无法让一个充满活力的城堡Cipher加载一个实例。
我打印出所有算法和所有提供者,部分列表如下:
RSA/ECB/PKCS1Padding : [SunMSCAPI version 1.7]
RSA/ISO9796-1 : [BC version 1.46]
RSA/OAEP : [BC version 1.46]
RSA/PKCS1 : [BC version 1.46]
根据我看到的例子,这应该有用
try
{
Cipher cipherb = Cipher.getInstance("RSA/PKCS1", "BC");
cipher.init(Cipher.DECRYPT_MODE, publicKey);
...
}
catch(Exception e)
{
e.printStackTrace();
return ;
}
但是我在调用Cipher.getInstance
时遇到异常java.security.NoSuchAlgorithmException:
Invalid transformation format:RSA/PKCS1
但是,RSA / PKCS1在列表中。我可以得到一个实例的唯一密码是Sun一个RSA / ECB / PKCS1Padding,它与我要解密的数据的来源不兼容。我无法弄清楚为什么这不起作用。
任何建议都非常感谢。
答案 0 :(得分:0)
Cipher.getInstance(..)
的第一个参数是具有以下形式的转换:
"algorithm/mode/padding" or
"algorithm"
根据bouncycastle's specification RSA + PKCS1在BouncyCastle中的格式为:"RSA/NONE/PKCS1Padding"
这是Maarten在评论中暗示的,与使用"RSA/ECB/PKCS1Padding"