Вам действительно не нужно использовать 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;
}
Редактировать: я бы рекомендовал не использовать MD5 и DES, если это не игровой проект, оба имеют недостатки и считаются устаревшими.