当前位置:编程学习 > JAVA >>

用aes算法解密时出现错误

用AES算法进行加密,我用的密码类型为jpassword类型,加密后进行解码时抛出javax.crypto.BadPaddingException: Given final block not properly padded
异常。
tf= new JPasswordField(20);//解密界面的密码输入框
char[] key2 ={};//解密时的密钥
解密时的调用算法如下:
{
key2=jtf3.getPassword;
originalContent=new AES().decrypt(deCodeContent, key2.toString());
jft2.setText(new String(originalContent));
}
下面是AES的解密代码:
/** 解密
 * @param content    待解密内容
 * @param keyWord    解密密钥
 * @return byte[]
 */
public static byte[] decrypt(byte[] content, String keyWord) {
try {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(keyWord.getBytes());
kgen.init(128, secureRandom);
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
Cipher cipher = Cipher.getInstance("AES");// 创建密码器
cipher.init(Cipher.DECRYPT_MODE, key);// 初始化
byte[] result = cipher.doFinal(content);
return result; // 加密
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return null;
}

/**
* @param content 待解密内容(字符串)
* @param keyWord 解密密钥
* @return byte[]
*/
public byte[] decrypt(String content, String keyWord) {
return decrypt(parseHexStr2Byte(content),keyWord); }
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,