You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AES加解密异常:后端加密数据前端解密后不完整求助

问题解决:Swift端AES解密数据不完整

核心问题:IV(初始化向量)不匹配

Java后端使用的是全0的16字节IV:

byte[] iv = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

但Swift前端的IV最后一位是0x0E,与后端完全不一致:

let iv: [UInt8] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x0E]

AES-CBC模式下,初始化向量必须前后端完全一致,否则会导致解密出的数据开头部分错乱或截断。

修复步骤

将Swift代码中的IV改为全0数组:

let iv: [UInt8] = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

额外验证点

  1. 盐值一致性:确保Swift中EncryptionKeys.saltKeyLoEncryption的值与Java的SALT完全相同:"t-*(b.:#H$[)7Mp&*@E]"`,包括所有特殊字符和大小写。
  2. PBKDF2参数匹配:当前代码中迭代次数(10000)、密钥长度(16字节=128位)、哈希算法(SHA256)均与Java端一致,无需调整。

修复后预期结果

修改IV后,解密后端提供的加密字符串61VkIxCEBJJ46QF6VPwpXg==,应得到完整的明文Hello World!。

内容的提问来源于stack exchange,提问作者Aadesh Maheshwari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 17:58:13