由于某种原因,无论指定哪种算法,在调用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.*")来解决该问题。

有谁知道我是否可以全局忽略此软件包?我不想将其添加到执行该包中的代码的每个类中。

10-08 14:24