【问题标题】:How to generate a AES 128 bit key in Java. I want something like this. Es8NxqG/f3VMzcd9mrPSQQ==如何在 Java 中生成 AES 128 位密钥。我想要这样的东西。 Es8NxqG/f3VMzcd9mrPSQQ==
【发布时间】:2019-01-15 19:33:18
【问题描述】:

我在下面试过了。

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

但没有达到要求的格式。 非常感谢任何帮助。 提前致谢。

【问题讨论】:

标签: java encryption aes


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-06-15
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 2014-06-15
    • 2016-05-26
    • 2020-04-19
    • 1970-01-01
    相关资源
    最近更新 更多