Java security class cast exception

假装没事ソ 提交于 2020-01-01 03:37:06

问题


Hi I am beginner in Java security, i encounter the following issue, when calling :

Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");

I got the error :

java.lang.ClassCastException: com.sun.crypto.provider.RSACipher cannot be cast to javax.crypto.CipherSpi

There are 5 more jars file for a payment gateway encryption in my war file:

  • cryptix-jce-api.jar
  • cryptix-jce-provider.jar
  • cryptix-message-api.jar
  • cryptix-openpgp-provider.jar
  • cryptix-pki-api.jar

Without these 5 JAR files then the Cipher.getInstance() works, but that is not possible because I need the JARs for payment information encryption.

Anyone out there can show me the path of how should I overcome this issue?


回答1:


Powermockito can't enhance javax.crypto classes so you might to add following annotation at the class level:

@PowerMockIgnore("javax.crypto.*") or @PowerMockIgnore({"javax.crypto" })




回答2:


Thanks for all the comments and answers.
In the end, I moved the 5 Jars out from WAR file to server Jars library directory and solved this.
In between there was an java.lang.RuntimeException: NYI.
It was solved using the solution from here: http://javabeanz.wordpress.com/2009/06/11/java-lang-runtimeexception-nyi/
Hope this helps, to anyone out there.
Once again thanks!




回答3:


Add this at class level @PowerMockIgnore("javax.crypto.*")or @PowerMockIgnore({"javax.crypto" })
After adding it if it shows Jce security exception
You can download this file Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8 and replace the local_policy jar file and US_policay jar file in this path:

C:\Program Files\Java\jdk1.8.0_151\jre\lib\security


来源:https://stackoverflow.com/questions/12914814/java-security-class-cast-exception

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!