【问题标题】:Issue in generating session key生成会话密钥的问题
【发布时间】:2016-10-06 23:55:26
【问题描述】:

我用下面的代码来生成 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?Ô–

我做得对吗?

【问题讨论】:

  • 尝试做往返加密/解密
  • 是的,输出是“正确的”。你期待什么?有什么问题?请记住,字节和可打印字符是两个不同的东西。

标签: java encryption session-keys


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多