制作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吗?
答案 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(...)