Я пишу фрагмент кода, который расшифровывает данные в Java, который зашифрован в некотором коде C ++ с помощью [poco lib] (http://pocoproject.org/docs/).
Код на C ++ похож, как показано ниже:
std::string password = "secret";
std::string salt("asdff8723lasdf(**923412");
CipherKey key("aes-256", password, salt);
Также с количеством итераций 2к.
DEFAULT_ITERATION_COUNT = 2000
Как мне создать этот же ключ в Java для расшифровки данных?
Что такое эквивалентный код в Java?
Я пытаюсь что-то вроде этого,
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
char[] passowrd = "secret".toCharArray();
byte[] salt = "asdff8723lasdf(**923412".getBytes();
KeySpec spec = new PBEKeySpec(passowrd,salt, 2000);
SecretKey tmp = factory.generateSecret(spec);
SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES");
Но это не работает. Не дает мне такой алгоритм поиска исключений. Какой алгоритм я должен использовать? Нужно ли знать что-то еще, чтобы расшифровать?
ОБНОВИТЬ
Я добавил Bounty Castle своему провайдеру безопасности, как указано user2504380
Задача ещё не решена.