生成会话密钥的问题

Issue in generating session key

我用下面的代码来生成sessionkeu

  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?Ô–

我做的对吗?

这个new String(aa)很可能是不正确的。它使用平台的默认字符集直接将 byte[] 转换为字符串。这意味着它运行的每个平台都可能不同。

byte[]显示、传输或存储为字符串的常用方法包括base16 (hexadecimal) representation, and base64