AES 解密 Android 与 iOS 行为不同

2019-11-28 15:17:37 +08:00
 Gehrman

AES/CBC/PKCS5PADDING 128 位

key:42fa7a440ae94c0e 偏移量:1236455559543215

a.原文 15068#1574908387

b.加密后转 Base64 字符串:K/pPwvZh689ZW/ud2ykbKYcWNWCyI1ScsFzvlZb8qs8=

c.设备端将 a 加密后转 Base64 字符串:K/pPwvZh689ZW/ud2ykbKQ==

现在情况是 iOS 端能将 c 解回原文,但 Android 不行,会报错。Android 在 a 和 b 之间互相转换是 OK 的,而且 iOS 按规则加密生成的其实也是 b。

4105 次点击
所在节点    问与答
28 条回复
longaiwp
2019-11-28 17:09:50 +08:00
@Gehrman base64 要注意自动填充\n 的坑爹问题,这可能是一个因素
Gehrman
2019-11-28 17:32:58 +08:00
@longaiwp 这个设置了 Base64.NO_WRAP,应该不会了
codeisjobs
2019-11-28 17:36:31 +08:00
@Gehrman iOS 能解,安卓不能解?密文不是服务器下发的吗?
42byte
2019-11-28 17:59:56 +08:00
@littleylv CryptoSwift 是作者自己用 Swift 重新实现了 AES 算法,走 CPU 计算的,没使用系统自带的 CommonCryptor 不能硬件加速,性能很差
littleylv
2019-11-28 18:22:54 +08:00
@42byte #24 谢谢科普
elvodn
2019-11-28 18:40:42 +08:00
Gehrman
2019-11-29 08:58:19 +08:00
@codeisjobs 是服务器下发的,
K/pPwvZh689ZW/ud2ykbKQ==
K/pPwvZh689ZW/ud2ykbKYcWNWCyI1ScsFzvlZb8qs8=
这两段密文 iOS 用同样的 key 和 iv 都解成了 15068#1574908387
这就是我疑惑的点
codeisjobs
2019-11-29 09:07:54 +08:00
@Gehrman 如果是服务器下发的密文,安卓解不了,那可能是安卓的代码有问题。一般都是服务器和安卓是通用的,iOS 出问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/623982

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX