由于某种原因,无论指定哪种算法,在调用SecretKeyFactory.getInstance()时我总是会在单元测试中遇到异常。例如:
SecretKeyFactory.getInstance("PBEWITHMD5ANDDES")
com.mhe.connect.util.EncryptionException: java.security.NoSuchAlgorithmException: PBEWITHMD5ANDDES SecretKeyFactory not available
同时,我看到Security.getProviders()返回了我所需的算法:
SECRETKEYFACTORY.DESEDE SunJCE
SECRETKEYFACTORY.PBEWITHMD5ANDDES SunJCE
SECRETKEYFACTORY.DES SunJCE
SECRETKEYFACTORY.PBEWITHMD5ANDTRIPLEDES SunJCE
SECRETKEYFACTORY.PBKDF2WITHHMACSHA1 SunJCE
SECRETKEYFACTORY.PBEWITHSHA1ANDDESEDE SunJCE
SECRETKEYFACTORY.PBEWITHSHA1ANDRC2_40 SunJCE
这仅在单元测试(从Maven或IDE)中发生,并且如果代码在Jetty下运行(从同一Maven/JDK运行),则可以正常工作。
发生这种行为的原因可能是什么?
最佳答案
今天遇到同样的问题。通过在类中添加@PowerMockIgnore ("javax.crypto.*")
来解决该问题。
有谁知道我是否可以全局忽略此软件包?我不想将其添加到执行该包中的代码的每个类中。