Проблема при создании сеансового ключа
Я забавляю следующий код для генерации сессионкеу
public byte[] generateSessionKey() throws NoSuchAlgorithmException, NoSuchProviderException
{
KeyGenerator kgen = KeyGenerator.getInstance("AES","BC");
kgen.init(256);
SecretKey key = kgen.generateKey();
byte[] symmKey = key.getEncoded();
return symmKey;
}
и распечатать его здесь
byte[] aa=encryptor.generateSessionKey();
String s1=new String(aa);
System.out.println(s1);
и вывод
Çɤđy3F:¦ïó‹AOÜYu•{Öç„>r?Ô–
я делаю это правильно?
1 ответ
Решение
Это new String(aa)
весьма вероятно, будет неверным. Это напрямую преобразует byte[]
в строку, используя набор символов платформы по умолчанию. Это означает, что он потенциально отличается для каждой платформы, на которой он работает.
Общие способы отображения, передачи или хранения byte[]
как строки включают представление base16 (шестнадцатеричное) и base64.