java aes key iv_java – AES / CBC真的需要IV参数吗?
我正在編寫一個簡單的應用程序來使用AES / CBC(模式)加密我的消息.由于我的理解CBC模式需要IV參數,但我不知道為什么我的代碼工作沒有使用IV參數.有誰能解釋為什么?謝謝.
打印的加密消息:T9KdWxVZ5xStaisXn6llfg ==無例外.
public class TestAES {
public static void main(String[] args) {
try {
byte[] salt = new byte[8];
new SecureRandom().nextBytes(salt);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
KeySpec keySpec = new PBEKeySpec("myPassword".toCharArray(), salt, 100, 128);
SecretKey tmp = keyFactory.generateSecret(keySpec);
SecretKeySpec key = new SecretKeySpec(tmp.getEncoded(), "AES");
Cipher enCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
enCipher.init(Cipher.ENCRYPT_MODE, key);
// enCipher.init(Cipher.ENCRYPT_MODE, key, new IvParameterSpec(iv));
byte[] cipherBytes = enCipher.doFinal("myMessage".getBytes());
String cipherMsg = BaseEncoding.base64().encode(cipherBytes);
System.out.println("Encrypted message: " + cipherMsg);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
總結
以上是生活随笔為你收集整理的java aes key iv_java – AES / CBC真的需要IV参数吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios怎么安装python3.7_Pyt
- 下一篇: java中输出时 什么作用_JAVA中