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