KeySpec выдает «Соль не найдена» - Соль не обязательна - PullRequest
0 голосов
/ 26 июня 2018

В настоящее время я работаю над небольшим фрагментом кода, который должен зашифровать байт [], прежде чем он будет сохранен в файле. В следующем фрагменте я пытаюсь сгенерировать SecretKey из пароля с использованием PBKDF2.

public SecretKey deriveKey(String password)
        throws NoSuchAlgorithmException, InvalidKeySpecException {
    SecretKeyFactory kf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
    KeySpec specs = new PBEKeySpec(password.toCharArray());
    SecretKey key = kf.generateSecret(specs);
    return key;
}

Это исключение

java.security.spec.InvalidKeySpecException: соль не найдена

в последней строке перед оператором возврата. Это кажется мне довольно запутанным, поскольку PBEKeySpec явно не требует больше параметров, как видно здесь .

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

1 Ответ

0 голосов
/ 26 июня 2018

Дело не в том, нужна ли классу PBEKeySpec соль или нет. Алгоритм PBKDF2 нужна соль. API - это универсальный API, который должен обслуживать несколько алгоритмов, некоторые из которых могут быть определены в будущем.

...