SecretKeyFactory.getInstance () создает исключение для всех алгоритмов в модульных тестах

по какой-то причине я всегда получаю исключение в модульном тесте при вызове SecretKeyFactory.getInstance () независимо от того, какой алгоритм указан. Например:

SecretKeyFactory.getInstance("PBEWITHMD5ANDDES")

com.mhe.connect.util.EncryptionException: java.security.NoSuchAlgorithmException: PBEWITHMD5ANDDES SecretKeyFactory not available

в то же время я вижу эту безопасность.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) и отлично работает, если код работает под причалом (который запускается из того же Maven/JDK).

что может быть причиной такого поведения?

2 ответов


столкнулся с той же проблемой сегодня. Решил его, добавив @PowerMockIgnore ("javax.crypto.*") в класс.

кто-нибудь знает, могу ли я глобально игнорировать этот пакет? Я не хочу добавлять его в каждый класс, который выполняет код из этого пакета.


спасибо, @T3rm1, который решил мою проблему!

получается, что работает

SecretKeyFactory.getInstance(<algorithm>)

в тестовой среде с powermockito javax.криптографический.* надо издеваться, и таким образом бросать java.безопасность.NoSuchAlgorithmException в моем случае

javax.crypto.SecretKeyFactory no such algorithm PBKDF2WithHmacSHA1