Вам не нужно использовать SecretKeyFactory
. Вы можете создать ключ AES с помощью следующего:
byte[] keyData = ........
SecretKeySpec key = new SecretKeySpec(keyData, "AES");
Если вы хотите использовать шифрование на основе пароля (PBE), просто выберите безопасный алгоритм хеширования, который дает вам хэш-код того же размера, что и требуемый ключ. Например, если вам нужен 256-битный ключ для AES, вот метод для создания ключа;
private Key buildKey(String password) throws NoSuchAlgorithmException, UnsupportedEncodingException {
MessageDigest digester = MessageDigest.getInstance("SHA-256");
digester.update(password.getBytes("UTF-8"));
byte[] key = digester.digest();
SecretKeySpec spec = new SecretKeySpec(key, "AES");
return spec;
}
Edit:
Я бы рекомендовал не использовать MD5 и DES, если это не игровой проект, оба имеют недостатки и считаются устаревшими.