gpt4 book ai didi

java - 将 "AES"指定为 KeyGenerator.getInstance() 中的算法究竟有什么作用?

转载 作者:搜寻专家 更新时间:2023-10-31 20:28:16 25 4
gpt4 key购买 nike

我对为什么在生成 key 加密时需要指定算法(例如“AES”)感到困惑,例如...

KeyGenerator kg = KeyGenerator.getInstance("AES");

它显然不用于指定 key 的大小,因为 AES key 可以是 128、192 或 256 位。该部分将通过 init() 完成...

kg.init(256, new SecureRandom());
SecretKey key = kg.generateKey();

就其值(value)而言,上面的示例代码是从 http://android-developers.blogspot.de/2013/02/using-cryptography-to-store-credentials.html 借来的

此外,NIST FIPS-197 声明...

No weak or semi-weak keys have been identified for the AES algorithm, and there is no restriction on key selection.

...所以这让我相信 任何 128、192 或 256 位都可以用作 key 。

很明显,当我得到一个密码实例时指定“AES”,例如......

Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");

...必须指明要使用的密码算法。我只是不明白为 key 生​​成指定它的目的是什么。

谢谢。

最佳答案

如评论中所述,除 AES 之外的其他 key 可能需要更多关注。最好有 DES 和 AES 的对称方法,以便您可以在算法之间切换。

此外,并非所有加密提供程序都可以在内存中创建 key 。 Java JCA 还与硬件 keystore 兼容。对于 PKCS#11 提供程序(例如),需要在生成 key 时知道 key 的类型。

关于java - 将 "AES"指定为 KeyGenerator.getInstance() 中的算法究竟有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24130154/

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