gpt4 book ai didi

java - 生成给定长度的 AES key ,其中包含 a-Z0-9

转载 作者:行者123 更新时间:2023-12-01 23:39:57 25 4
gpt4 key购买 nike

是否可以使用 AES 创建一个给定长度的 key ,并且它应该仅包含 0-9a-Z?

我只需要一个 32 个字符的 key 作为 SecretKey 规范 :( 用于 AES256 加密/解密

最佳答案

is it possible to create a secret key using AES but with a given length and it should cointain only 0-9a-Z?

是的。通过生成 AES key 值,然后确保每个字符的 ascii 值在 0-8 (48 - 57)a-z (97-122)< 范围内.. 如果不是,只需将值修改为在范围内即可。

但是..

这会导致 key 极其不安全。通过如此严格地限制你的值,你实际上限制了可能的组合的数量。通常情况下,有 2^256 种可能的组合(此时被认为是安全的),但您将其减少到更少的可能组合...这是不安全的。

此外,我建议的上述算法会产生大量重复值。您将比较差异,然后修正直到差异为 0.. 这意味着:

For any value < the desired value.
round value to desired value.
Let desired value = 100;
Let any value = 50;
50 --> 100;
Let any value = 60;
60 --> 100;

最重要的是..

一个Brute Force Attack通常会从测试 aaaa... x 256 开始。然后(aaaa x 255) 1。我的意思是,暴力通常以字母数字字符开头。你只是让你的 key 准备好破解。

除此之外..

AES key 定义为 128、192 或 256 位。这就是标准。你无法改变长度。您可以做的是查看 Rijndael ,这就是 AES 在成为标准之前的情况。这可以接受更广泛的键值。

以及最重要的

AES key 是由 key 计划生成的,这种方式是有原因的。它设计是为了在密码学上抵抗密码分析。通过搞乱它,你会危及整个算法的安全性,从而当你要搞乱输出时,实现加密标准变得毫无意义。

我找不到更大的字体

您希望输出的长度为 32 个字符。在 ASCII 中,这意味着每个字符 8 位。或32 x 8 = 256。嗯.. AES 的推荐模式是256 位,所以你很幸运。您可以使用哈希算法来生成应在 a-z0-9 范围内的值。

关于java - 生成给定长度的 AES key ,其中包含 a-Z0-9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18120567/

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