2015-04-28 69 views
1

做些什么来解密和加密RSA支持RSA/NONE/PKCS1Padding,我用Cipher.getInstance("RSA/NONE/PKCS1Padding");它,我加入Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());compile 'org.bouncycastle:bcprov-jdk16:1.45'到摇篮文件。所以这个项目运行和IntelliJ IDEA的工作,java.security.NoSuchAlgorithmException:找不到任何提供商的jar文件

但是,如果我生成.jar文件,并运行它,我有:

java.security.NoSuchAlgorithmException: Cannot find any provider supporting RSA/NONE/PKCS1Padding 
    at javax.crypto.Cipher.getInstance(Cipher.java:540) 

(由gradle产出的ShadowJar任务生成的.jar)。

为什么我的项目在Intellij Idea - 工作!并在.jar文件 - 不起作用?

+0

相关:[RSA/NONE/PKCS1Padding给出的错误为java.security.NoSuchAlgorithmException](http://stackoverflow.com/questions/20961481/rsa-none-pkcs1padding-giving-error-as-java-security-nosuchalgorithmexception) –

回答

1

"RSA/NONE/PKCS1Padding"在大多数JDK的默认安全提供程序中不是可用的。您可以使用"RSA/ECB/PKCS1Padding"这意味着相同的事情,但为了向后兼容性使用ECB名称。

的BouncyCastle的提供者提供访问"RSA/NONE/PKCS1Padding",但你需要专门查询它,因为加一个提供给供应商列表不让它默认提供:

Cipher.getInstance("RSA/NONE/PKCS1Padding", "BC");
相关问题