Как использовать сгенерированный и закодированный ключ в jce - PullRequest
1 голос
/ 18 декабря 2009

Если я сгенерирую такой ключ:

SecretKey aesKey    = KeyGenerator.getInstance("AES").generateKey();

Затем расшифруйте его:

System.out.println("used key: " + aesKlic.getEncoded());

А теперь я хочу использовать его для расшифровки (после выхода из программы и повторного запуска). Очевидно, что-то вроде этого не работает:

SecretKey aesKey    = javax.crypto.spec.SecretKeySpec@[B@6c6e70c7;

если строка в конце является декодированным ключом.

1 Ответ

1 голос
/ 18 декабря 2009

getEncoded() возвращает byte[], реализация которого toString() не то, что вы ищете.

Возможно, вы ищете гекс или представление вашего ключа в base64.

Для шестнадцатеричного числа вы можете использовать Hex.encodeHex (byte [])

Для base64 - Base64.encodeBase64String (byte [])

(оба из apache commons-codec )

Когда вам нужно восстановить ключ в строковом коде (например, при повторном запуске вашей программы), вам придется вызывать эквиваленты декодирования вышеупомянутых методов (они в тех же классах).

...