如何创建随机AES 128 PrivateKey和IV作为字符串?

时间:2019-07-10 06:52:03

标签: java security encryption aes

制作AES 128 private_keysinit vectors的简单方法是什么?

我阅读了使用 UUID 的惯例,但是当我尝试实现时:

    UUID uuid = UUID.randomUUID() ;
    String private_key = uuid.toString();

错误消息:

  

无效的AES密钥长度:36个字节

告诉我uuid.toString() = "38400000-8cf0-11bd-b23e-10b96e4ef00d"不是128字节。

此外,您将如何创建一个16字节的Init向量作为字符串?您还可以使用uuid吗?

1 个答案:

答案 0 :(得分:1)

密钥(通常是加密)是在字节字节数组上定义的。您可以查看the blog以获取示例

和顺便说一句-我们正在谈论128位(= 16字节)

  

制作AES 128私钥和初始化向量的简单方法是什么?

最安全的方法是使用SecureRandom类,尤其是对于密钥。我不会考虑使用uuid足够安全(不够随机)

SecureRandom rnd = new SecureRandom();
byte[] key = new byte[KEY_SIZE / 8];
byte[] iv = new byte[SYMMETRIC_BLOCK_SIZE / 8];
rnd.nextBytes(key);
rnd.nextBytes(iv);
  

如何将随机AES 128 PrivateKey和IV创建为字符串?

如果要以文本形式表示键或iv(字节数组),可以对其进行编码,Base64或Hex是最常见的编码方式

Base64.getEncoder().encodeToString(...)