Как использовать ключ, сгенерированный KeyGenerator в более позднее время? - PullRequest
5 голосов
/ 19 июня 2011

Я пишу программу, которая выполняет шифрование и дешифрование в DES. Тот же ключ, который использовался в процессе шифрования, должен использоваться и при расшифровке, верно? Моя проблема заключается в том, что шифрование и дешифрование выполняются на разных машинах. Вот как ключ генерируется во время процесса шифрования.

SecretKey key = KeyGenerator.getInstance("DES").generateKey();

Итак, я думал, что напишу ключ к файлу. Но похоже, что я могу типизировать объект SecretKey в строку, но не наоборот! Итак, как мне извлечь ключ, содержащийся в текстовом файле? И передать как вход в это утверждение?

 decipher.init(Cipher.DECRYPT_MODE, key, paramSpec);

Или же можно принять ключ в качестве ввода от пользователя в процессе шифрования и дешифрования?

1 Ответ

12 голосов
/ 19 июня 2011

Сделайте это:

SecretKey key = KeyGenerator.getInstance("DES").generateKey();
byte[] encoded = key.getEncoded();
// save this somewhere

Затем позже:

byte[] encoded = // load it again
SecretKey key = new SecretKeySpec(encoded, "DES");

Но, пожалуйста, помните, что DES сегодня небезопасен (его можно относительно легко взломать)Настоятельно рекомендуем вместо этого использовать AES (просто замените «DES» на «AES»).

...