gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:42:28 27 4
gpt4 key购买 nike

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

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

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

错误信息:

Invalid AES key length: 36 bytes

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

此外,如何将 16 字节初始化 vector 创建为字符串?也可以使用uuid吗?

最佳答案

key (通常是加密)是通过字节数组定义的。您可以查看the blog例如

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

What's a simple way to make AES 128 private_keys and init vectors?

最安全的方法是使用 SecureRandom 类,尤其是对于 key 。我不会考虑使用足够安全的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);

How to create random AES 128 PrivateKey and IV as strings?

如果您想要 key 或 iv(字节数组)的文本表示,您可以对它们进行编码,Base64 或 Hex 是最常见的编码

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

关于java - 如何创建随机 AES 128 PrivateKey 和 IV 作为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56964893/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com