我很困惑为什么在生成加密密钥时需要指定诸如“AES”之类的算法,例如..
KeyGenerator kg = KeyGenerator.getInstance("AES");
它显然不用于指定密钥的大小,因为 AES 密钥可以是 128、192 或 256 位。那部分将通过 init() 完成...
kg.init(256, new SecureRandom());
SecretKey key = kg.generateKey();
值得一提的是,上面的示例代码是从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");
...必须指明要使用的密码算法。我只是不明白为密钥生成指定它的目的是什么。
谢谢。