d60*_*402 5 java encryption cryptography aes key-generator
我很困惑为什么在生成加密密钥时需要指定一个算法,如"AES" ,例如..
KeyGenerator kg = KeyGenerator.getInstance("AES");
Run Code Online (Sandbox Code Playgroud)
它显然不用于指定密钥的大小,因为AES密钥可以是128,192或256位.那部分将通过init()来完成......
kg.init(256, new SecureRandom());
SecretKey key = kg.generateKey();
Run Code Online (Sandbox Code Playgroud)
对于它的价值,上面的示例代码来自http://android-developers.blogspot.de/2013/02/using-cryptography-to-store-credentials.html
此外,NIST FIPS-197声明......
没有为AES算法识别弱密钥或半弱密钥,并且对密钥选择没有限制.
...这样会让我相信任何 128,192或256位都可以用作密钥.
显然,当我获得密码实例时指定"AES",例如..
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
Run Code Online (Sandbox Code Playgroud)
...表示要使用的密码算法是必要的.我只是没有得到为密钥生成指定它的目的.
谢谢.
正如评论中提到的,除 AES 之外的其他密钥可能需要更多关注。DES 和 AES 最好采用对称方法,以便您可以在算法之间切换。
此外,并非所有加密提供者都可以在内存中创建密钥。Java JCA 还与硬件密钥存储兼容。例如,对于 PKCS#11 提供程序,在生成密钥时需要知道密钥的类型。
| 归档时间: |
|
| 查看次数: |
3174 次 |
| 最近记录: |