簡體   English   中英

Java安全類強制轉換異常

[英]Java security class cast exception

嗨,我是Java安全的初學者,我在調用時遇到以下問題:

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

我收到了錯誤:

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

在我的war文件中還有5個用於支付網關加密的jar文件:

  • CRYPTIX-JCE-api.jar文件
  • CRYPTIX-JCE-provider.jar
  • CRYPTIX-消息api.jar文件
  • CRYPTIX-的OpenPGP-provider.jar
  • CRYPTIX-PKI-api.jar文件

如果沒有這5個JAR文件,那么Cipher.getInstance()可以工作,但這是不可能的,因為我需要JAR來進行支付信息加密。

那里的任何人都可以告訴我如何克服這個問題的道路?

Powermockito無法增強javax.crypto類,因此您可以在類級別添加以下注釋:

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

感謝所有的評論和答案。
最后,我將5個Jars從WAR文件移出到服務器Jars庫目錄並解決了這個問題。
之間有一個java.lang.RuntimeException: NYI
它是使用此處的解決方案解決的: http//javabeanz.wordpress.com/2009/06/11/java-lang-runtimeexception-nyi/
希望這對那里的任何人都有幫助。
再次感謝!

在類級別@PowerMockIgnore("javax.crypto.*")@PowerMockIgnore({"javax.crypto" })添加此項
添加后如果顯示Jce安全異常
您可以下載此文件Java Cryptography Extension(JCE)Unlimited Strength Jurisdiction Policy Files 8並在此路徑中替換local_policy jar文件和US_policay jar文件:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM