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對象