Как сгенерировать 128-битный ключ AES в Java. Я хочу что-то подобное. Es8NxqG / f3VMzcd9mrPSQQ == - PullRequest
0 голосов
/ 15 января 2019

Я попробовал ниже.

KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128);
SecretKey skey = kgen.generateKey();
String s = new String(skey.getEncoded());

Но не в нужном формате. Буду очень признателен за любую помощь. Заранее спасибо.

1 Ответ

0 голосов
/ 15 января 2019

skey.getEncoded ()

getEncoded метод возвращает байтовый массив. Вы не можете просто создать строку из байтового массива, большинство байтов будет представлять непечатаемые символы.

Вы запрашиваете кодировку Base64 - это способ представления двоичных данных в виде печатного символа.

Вы можете использовать кодировщик Java Base64 по умолчанию https://docs.oracle.com/javase/8/docs/api/java/util/Base64.html для кодирования и декодирования двоичных данных.

String encodedKey = Base64.getEncoder().encodeToString(skey.getEncoded());

Также используются другие реализации кодировщика, такие как commons-codec

Обратите внимание - в crypto все примитивы и операции (ключи, шифрование, дайджест, подпись и т. Д.) Работают поверх байтовых массивов, кодирование используется только для представления данных в виде печатаемой строки

...