首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java AES加密在出现错误填充异常后失败

Java AES加密在出现错误填充异常后失败
EN

Stack Overflow用户
提问于 2016-05-25 00:39:09
回答 1查看 197关注 0票数 0

我使用下面的代码来解密128位AES加密的密文。

代码语言:javascript
复制
final IvParameterSpec ivSpec = new IvParameterSpec(ivBytes);
final SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");

final Cipher cipherSpec = Cipher.getInstance("AES/CBC/PKCS5PADDING");
cipherSpec.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
cipherSpec.doFinal(DatatypeConverter.parseBase64Binary(encrypted));

我的加密文本是简单的一行语句,我使用以下密钥和初始verctor

代码语言:javascript
复制
Key = "77696567683763656548616574326F6F"; // 128 bit key, hext string
initVector = "6F68706865726F68563274686F6F3761"; // 16 bytes IV, hex string

除了下面的场景之外,一切都运行得很好。

1)使用密钥作为初始向量,初始向量和密钥对明文进行加密。解密失败,返回BadPaddingException

2)以key为密钥,以初始向量为初始向量进行加密。上面的代码无一例外地解密密文,但输出是垃圾。不是我加密的。

3)再次解密上述正确加密的密文(在2步中),现在将其解密为正确的明文。

我的问题是,为什么在步骤2中解密无法解密为正确的密文?

EN

回答 1

Stack Overflow用户

发布于 2016-05-25 04:55:38

我相信您的密钥,如果128位,需要是16个字符(utf-8)字节数组,而不是32个字符。因此,您可能希望执行以下操作:

代码语言:javascript
复制
Key = ("7769656768376365").getBytes("UTF-8");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37419365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档