我用的是AES 256 CBC。我有32个字节的IV。但当我运行它时,它会显示一个异常:
Exception in thread "main" java.lang.RuntimeException: java.security.InvalidAlgorithmParameterException: Wrong IV length: must be 16 bytes long
at com.abc.aes265cbc.AESUtil.decrypt(AESUtil.java:50)
at com.abc.aes265cbc.Security.main(Security.java:48)
Caused by: java.security.InvalidAlgorithmParameterException: Wrong IV length: must be 16 bytes long
at com.sun.crypto.provider.CipherCore.init(CipherCore.java:430)
at com.sun.crypto.provider.AESCipher.engineInit(AESCipher.java:217)
at javax.crypto.Cipher.implInit(Cipher.java:790)
at javax.crypto.Cipher.chooseProvider(Cipher.java:848)
at javax.crypto.Cipher.init(Cipher.java:1347)
at javax.crypto.Cipher.init(Cipher.java:1281)
at com.abc.aes265cbc.AESUtil.decrypt(AESUtil.java:47)
... 1 more
public static void setENCRYPTION_IV(String ENCRYPTION_IV) {
AESUtil.ENCRYPTION_IV = ENCRYPTION_IV;
}
public static void setENCRYPTION_KEY(String ENCRYPTION_KEY) {
AESUtil.ENCRYPTION_KEY = ENCRYPTION_KEY;
}
public static String encrypt(String src) {
try {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, makeKey(), makeIv());
return Base64.encodeBytes(cipher.doFinal(src.getBytes()));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static String decrypt(String src) {
String decrypted = "";
try {
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, makeKey(), makeIv());
decrypted = new String(cipher.doFinal(Base64.decode(src)));
} catch (Exception e) {
throw new RuntimeException(e);
}
return decrypted;
}
static AlgorithmParameterSpec makeIv() {
try {
return new IvParameterSpec(ENCRYPTION_IV.getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}
static Key makeKey() {
try {
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] key = md.digest(ENCRYPTION_KEY.getBytes("UTF-8"));
return new SecretKeySpec(key, "AES");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}
AESUtil.setENCRYPTION_KEY("96161d7958c29a943a6537901ff0e913efaad15bd5e7c566f047412179504ffb");
AESUtil.setENCRYPTION_IV("d41361ed2399251f535e65f84a8f1c57");
String decrypted = AESUtil.decrypt(new String(sw0SrUIKe0DmS7sRd9+XMgtYg+BUiAfiOsdMw/Lo2RA=)); // AES Decrypt
AES算法的块大小为128位,而不管您的密钥长度是256、192还是128位。
当对称密码模式需要IV时,IV的长度必须等于密码的块大小。因此,在AES中必须始终使用128位(16字节)的IV。
没有办法将32字节IV与AES一起使用。
我在我的JSF2.0应用程序中使用Mail1.4.3jar,我试图在请求新用户时发送电子邮件,如果我们发送邮件,则邮件内容显示为普通的,尽管我对邮件使用的是text/html并且我的代码是 MimeMessage消息=新的MimeMessage(会话); 有人能帮我吗 谢谢,Sanjiv
这是我的Fab活动 } 这是我的logcat 进程:com.teepe.teepe,PID:29259 java.lang.RuntimeException:无法启动活动组件Info{com.teepe.teepe/com.teepe.teepe.MainActivity}:java.lang.ClassCastException:Android.Support.Design.Widget.Flo
这是我的桌子 我需要在控制台上显示哈里的名字和他45岁的年龄'''
我正在尝试向我的storm群集提交字数拓扑。我使用Eclipse创建了一个jar,但它显示了异常。 谁能告诉我该怎么办。我在这里附上我的代码和例外。 喷口创作- 螺栓代码- 螺栓计数频率- 主类创建拓扑- 编辑异常 这是我得到的一个例外:
e1文本转换器 @重写公共无效后文本更改(可编辑){ et2文本转换器 et3 textchanger@Override public void afterTextChanged(可编辑的s){ 不计算编辑文本的值 即使尝试在et1和et2中使用文本观察程序执行计算,应用程序也会崩溃