Abstract
在对称密钥生成、加密或解密过程中,代码错过了对一个必需步骤的调用。
Explanation
对称密钥的生成以及加密和解密涉及多个步骤,错过任何必需步骤都可能会削弱所生成对称密钥或密文的强度,或导致对现有密文的不正确解密。
例 1:下列代码跳过了
例 1:下列代码跳过了
KeyGenerator
的初始化步骤,可能导致使用比推荐的密钥更小的密钥:... final String CIPHER_INPUT = "123456ABCDEFG"; KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); SecretKey secretKey = keyGenerator.generateKey(); byte[] byteKey = secretKey.getEncoded(); ....
解决方案:
KeyGenerator generator = KeyGenerator.getInstance("DES"); SecureRandom random = new SecureRandom(); generator.init(random);//初始化秘钥生成器 SecretKey key = generator.generateKey();//生成密钥 Mac mac = Mac.getInstance("HmacSHA256");//得到此密钥的Mac对象