AES解密:javax.crypto.IllegalBlockSizeException:解密中的最后一个块未完成
我正在尝试使用AES128加密技术对从web服务获得的加密数据进行解密 下面是我用来实现同样目的的代码 但我总是会有以下例外:AES解密:javax.crypto.IllegalBlockSizeException:解密中的最后一个块未完成,java,exception,encryption,cryptography,aes,Java,Exception,Encryption,Cryptography,Aes,我正在尝试使用AES128加密技术对从web服务获得的加密数据进行解密 下面是我用来实现同样目的的代码 但我总是会有以下例外: javax.crypto.IllegalBlockSizeException:解密中最后一个块未完成 public static String decrypt(String strToDecrypt) { try { Cipher cipher = Cipher.getInstance("AES/CBC/
javax.crypto.IllegalBlockSizeException:解密中最后一个块未完成
public static String decrypt(String strToDecrypt)
{
try
{
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
final SecretKeySpec secretKey = new SecretKeySpec(AppConstants.AESEncryptionKey.getBytes("UTF8"), "AES");
cipher.init(Cipher.DECRYPT_MODE, secretKey,new IvParameterSpec(new byte[16])); //new IvParameterSpec(new byte[16])
byte base64Data[] = Base64.encode(strToDecrypt.getBytes(), Base64.DEFAULT);
@SuppressWarnings("unused")
String s = base64Data.toString();
byte decBytes[] = cipher.doFinal(base64Data);
String decStr = new String(decBytes);
return decStr;
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
请输入您宝贵的信息,因为我被困在这里了。您必须呼叫Base64.decodeBase64(s)。然后调用Cipher.doFinal()
Cipher.doFinal(Base64.decodeBase64(s)) 您必须调用Base64.decodeBase64(s)。然后调用Cipher.doFinal()
Cipher.doFinal(Base64.decodeBase64(s)) 您必须调用Base64.decodeBase64(s)。然后调用Cipher.doFinal()
Cipher.doFinal(Base64.decodeBase64(s)) 您必须调用Base64.decodeBase64(s)。然后调用Cipher.doFinal()
Cipher.doFinal(Base64.decodeBase64(s)) 您正在对基本64编码密文进行编码,而不是对其进行解码。根据
Base64
的不同,您需要调用一个函数,将字符串
或字符序列
解码为字节数组,然后对其进行解密。请测试结果是否是块大小的倍数,AES为16字节。您正在对基本64编码密文进行编码,而不是对其进行解码。根据Base64
的不同,您需要调用一个函数,将字符串
或字符序列
解码为字节数组,然后对其进行解密。请测试结果是否是块大小的倍数,AES为16字节。您正在对基本64编码密文进行编码,而不是对其进行解码。根据Base64
的不同,您需要调用一个函数,将字符串
或字符序列
解码为字节数组,然后对其进行解密。请测试结果是否是块大小的倍数,AES为16字节。您正在对基本64编码密文进行编码,而不是对其进行解码。根据Base64
的不同,您需要调用一个函数,将字符串
或字符序列
解码为字节数组,然后对其进行解密。请测试结果是否是块大小的倍数,AES为16字节。重要注意事项
在我的例子中,这个问题是因为加密没有正确执行,
当我试图加密数据时,我的代码出错了,这就是为什么中间加密被终止的原因,
因此,一旦您检查加密是否正常工作。重要注意事项 在我的例子中,这个问题是因为加密没有正确执行, 当我试图加密数据时,我的代码出错了,这就是为什么中间加密被终止的原因,
因此,一旦您检查加密是否正常工作。重要注意事项 在我的例子中,这个问题是因为加密没有正确执行, 当我试图加密数据时,我的代码出错了,这就是为什么中间加密被终止的原因,
因此,一旦您检查加密是否正常工作。重要注意事项 在我的例子中,这个问题是因为加密没有正确执行, 当我试图加密数据时,我的代码出错了,这就是为什么中间加密被终止的原因,
因此,一旦您检查加密是否正常工作。您从web服务获取的字符串是什么格式的?Base64编码?我得到一个加密字符串,我将它转换为Base64编码字符串,然后解密它。您从web服务得到的字符串是什么格式的?Base64编码?我得到一个加密字符串,我将它转换为Base64编码字符串,然后解密它。您从web服务得到的字符串是什么格式的?Base64编码?我得到一个加密字符串,我将它转换为Base64编码字符串,然后解密它。您从web服务得到的字符串是什么格式的?Base64 encoded?我得到一个加密字符串,我将其转换为Base64 encoded字符串,然后对其进行解密。在android eclipse中,当我使用decodeBase64(字符串)时,我得到以下错误:类型的decodeBase64(字符串)方法未定义Base64@iJose那么,您使用的是哪种
Base64
,以及哪些方法可用。采取一些主动措施会很好。@owlstead我正在使用android.util.Base64类对Base64编码的密码文本进行解码,然后对其进行解密。因此,在android eclipse中检查时,当我使用decodeBase64(字符串)时,会出现以下错误:类型的decodeBase64(字符串)方法未定义Base64@iJose好,您使用的是哪个Base64
,哪些方法可用。采取一些主动措施会很好。@owlstead我正在使用android.util.Base64类对Base64编码的密码文本进行解码,然后对其进行解密。因此,在android eclipse中检查时,当我使用decodeBase64(字符串)时,会出现以下错误:类型的decodeBase64(字符串)方法未定义Base64@iJose好,您使用的是哪个Base64
,哪些方法可用。采取一些主动措施会很好。@owlstead我正在使用android.util.Base64类对Base64编码的密码文本进行解码,然后对其进行解密。因此,在android eclipse中检查时,当我使用decodeBase64(字符串)时,会出现以下错误:类型的decodeBase64(字符串)方法未定义Base64@iJose好,您使用的是哪个Base64
,哪些方法可用。一些主动性会很好。@owlstead我正在使用android.util.Base64类对Base64编码的密码文本进行解码,然后对其进行解密。因此,请检查我还有一个问题,您提到的关于块大小的问题,我想使用AES 128算法进行解密,你知道怎么做吗?好的,先生,在使用解码函数时,我现在得到以下异常javax.crypto.BadPaddingExc