Проблема при создании сеансового ключа

Я забавляю следующий код для генерации сессионкеу

  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.

Другие вопросы по тегам