如何在Java中生成AES 128位密钥。我想要这样的东西。 Es8NxqG / f3VMzcd9mrPSQQ ==

时间:2019-01-15 06:27:36

标签: java encryption aes

我在下面尝试过。

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

但未获得所需的格式。 非常感谢您的帮助。 预先感谢。

1 个答案:

答案 0 :(得分:2)

  

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

请注意-在加密中,所有原语和操作(密钥,加密,摘要,签名,..)都在字节数组上运行,编码仅用于将数据表示为可打印的字符串