gpt4 book ai didi

java - AES 随 secret 钥生成

转载 作者:行者123 更新时间:2023-12-02 13:00:38 25 4
gpt4 key购买 nike

我看到很多这样生成 key 的例子:

KeyGenerator generator = KeyGenerator.getInstance("AES");
generator.init(KEY_LEN);
SecretKey secretKey = generator.generateKey();

我怀疑以下内容是否存在差异(甚至是概念上的差异):

byte[] material = new byte[KEY_LEN / Byte.SIZE];
SecureRandom.getInstanceStrong().nextBytes(material);
SecretKey secretKey = new SecretKeySpec(material, "AES");

声明这两种方法都是 3 行,选择第一种而不是第二种有实际影响吗?

谢谢

最佳答案

您可以查看 generateKey() 的实际源代码来了解差异,但最终它们都将执行相同的步骤来生成 AES key 。我认为是后者

byte[] material = new byte[KEY_LEN / Byte.SIZE];
SecureRandom.getInstanceStrong().nextBytes(material);
SecretKey secretKey = new SecretKeySpec(material, "AES");

对于普通编码员来说有点脆弱,要求他们理解 SecureRandom 类。如果完全删除第二行,则代码在全零 key 下运行得很好,这是一个明显的漏洞,攻击者也很容易检查。此外,如果算法有一些特定要求,则使用 generateKey() 可以生成格式正确的 key 。例如,现在已经过时的 DES 和 Triple DES 算法在每个字节中都有一个奇怪的奇偶校验位,这是某些 DES 实现所期望看到的。

关于java - AES 随 secret 钥生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48766528/

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