首页 > 解决方案 > 如何创建随机 AES 128 PrivateKey 和 IV 作为字符串?

问题描述

AES 128 private_keys制作和的简单方法是什么init vectors

我读到使用UUID是常见的做法,但是当我尝试实现时:

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

错误信息:

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

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

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

标签: javasecurityencryptionaes

解决方案


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

顺便说一句 - 我们谈论的是 128 位(=16 字节)

制作 AES 128 private_keys 和 init 向量的简单方法是什么?

最安全的方法是使用 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(...) 

推荐阅读