java.security.nosuchalgorithmexception:在jar文件中找不到任何支持rsa/none/pkcs1p的提供程序

pexxcrt2  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(870)

我要解密和加密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文件中-不工作?

brccelvz

brccelvz1#

"RSA/NONE/PKCS1Padding" 在大多数jdk的默认安全提供程序中是不可用的。你可以用 "RSA/ECB/PKCS1Padding" 这意味着同样的事情,但使用欧洲央行的名称向后兼容。
bouncycastle提供程序确实允许访问 "RSA/NONE/PKCS1Padding" ,但您需要具体地查询它,因为将提供程序添加到提供程序列表不会使其成为默认提供程序:

Cipher.getInstance("RSA/NONE/PKCS1Padding", "BC");

相关问题