我要解密和加密rsa,我用 Cipher.getInstance("RSA/NONE/PKCS1Padding");
我补充说 Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
以及 compile 'org.bouncycastle:bcprov-jdk16:1.45'
到gradle文件。所以这个项目要在intellij idea中运行和工作,
但如果我生成.jar文件并运行它,我有:
java.security.NoSuchAlgorithmException: Cannot find any provider supporting RSA/NONE/PKCS1Padding
at javax.crypto.Cipher.getInstance(Cipher.java:540)
(gradle的shadowjar任务生成的.jar)。
为什么我的项目是intellij创意工作!在.jar文件中-不工作?
1条答案
按热度按时间brccelvz1#
"RSA/NONE/PKCS1Padding"
在大多数jdk的默认安全提供程序中是不可用的。你可以用"RSA/ECB/PKCS1Padding"
这意味着同样的事情,但使用欧洲央行的名称向后兼容。bouncycastle提供程序确实允许访问
"RSA/NONE/PKCS1Padding"
,但您需要具体地查询它,因为将提供程序添加到提供程序列表不会使其成为默认提供程序: