我在下面尝试过。
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128);
SecretKey skey = kgen.generateKey();
String s = new String(skey.getEncoded());
但未获得所需的格式。 非常感谢您的帮助。 预先感谢。
答案 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
请注意-在加密中,所有原语和操作(密钥,加密,摘要,签名,..)都在字节数组上运行,编码仅用于将数据表示为可打印的字符串