首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解密过程中出现Android AES加密错误

解密过程中出现Android AES加密错误
EN

Stack Overflow用户
提问于 2012-05-18 16:18:25
回答 1查看 602关注 0票数 0

我对Android/Java中的AES加密一无所知

我从这里得到了这个代码,http://www.androidsnippets.com/encryptdecrypt-strings

当我的代码被解密时,我会得到下面的错误信息。(我将加密值从一个活动传递到另一个活动)

代码语言:javascript
复制
 05-18 13:49:58.828: W/System.err(3350): javax.crypto.BadPaddingException: pad block   corrupted
 05-18 13:49:59.133: W/System.err(3350):    at org.bouncycastle.jce.provider.JCEBlockCipher.engineDoFinal(JCEBlockCipher.java:653)
 05-18 13:49:59.148: W/System.err(3350):    at javax.crypto.Cipher.doFinal(Cipher.java:1116)
 05-18 13:49:59.153: W/System.err(3350):    at com.spacenext.noserver2.SimpleCrypto.decrypt(SimpleCrypto.java:55)
 05-18 13:49:59.158: W/System.err(3350):    at com.spacenext.noserver2.SimpleCrypto.decrypt(SimpleCrypto.java:28)

加密

代码语言:javascript
复制
 05-18 15:07:32.283: I/Home(3341): 530AEA4983C93379EB512387B4E547522C1E310AD6E7752AF5B9F91C329D313315FDDA853E60C78EA618211A37BA8A47

在另一个活动中接收到的加密消息

代码语言:javascript
复制
 05-18 15:07:55.382: I/Home(7871): 530AEA4983C93379EB512387B4E547522C1E310AD6E7752AF5B9F91C329D313315FDDA853E60C78EA618211A37BA8A47

两者是相同的,但是当消息在另一个活动中被解密时,它会抛出一条错误消息。

EN

回答 1

Stack Overflow用户

发布于 2012-05-18 17:23:36

此代码使用弱密钥派生过程,请考虑使用标准的基于密码的加密来派生密钥。

错误的原因很可能是您使用了错误的密钥进行解密。将其以十六进制格式打印出来,并与您的加密密钥(getRawKey()的输出)进行比较。如果您以某种方式定制了代码,请显示相关部分。您是如何传递加密值的?它是以某种方式编码的吗?还要检查解密活动中的大小是否与预期一致。

因为加密和解密是在不同的设备上完成的,并且涉及到一个服务器。下面是一些需要检查/牢记的事情:

  1. 确保您从设备A发送的密文与在设备B上收到的密文相同。可能涉及编码问题。
  2. 不使用模式和填充的默认参数。这些在你的设备上可能会有所不同。显式地指定它们,就像Cipher.getInstance("AES/CBC/PKCS5Padding")
  3. Make一样,确保您将IV与密文一起发送。否则,可能会自动生成一个随机数,您将无法解密。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10649133

复制
相关文章

相似问题

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