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

序列化反序列化LoginModel后AES解密失效的原因排查

问题成因分析

以下是导致序列化反序列化后解密失效的常见核心原因:

  • 加密依赖的状态未被正确序列化:如果LoginModel中持有AesEncryption类的实例(包含密钥、IV等核心加密参数),Newtonsoft.Json默认不会序列化非公共成员或未标记[JsonProperty]的复杂对象字段。反序列化后,AesEncryption实例会丢失关键状态(比如已生成的IV),导致解密时无法匹配加密时的参数组合,解密失败。
  • 属性访问器与序列化逻辑冲突:若LoginModel的用户名/密码属性通过getter解密、setter加密实现逻辑,但属性的setter为私有或未标记[JsonProperty],Newtonsoft.Json会直接反射修改底层字段而非调用setter。这会导致反序列化时,加密后的字符串被直接赋值给字段(或明文被直接写入),跳过了加密/解密的逻辑校验,后续调用解密方法时使用的是错误的数据源。
  • AesEncryption类未实现序列化兼容:如果AesEncryption类未添加[Serializable]特性,或未将密钥、IV等必要字段标记为可序列化(比如用[JsonProperty]),Newtonsoft.Json序列化时会忽略这些核心参数。反序列化得到的AesEncryption实例是不完整的,无法还原加密时的上下文,自然无法完成解密。
  • 反序列化未触发构造时的加密逻辑:LoginModel的加密逻辑仅在构造函数中执行,但Newtonsoft.Json默认使用无参构造函数创建实例,随后直接赋值字段/属性,不会调用带参构造函数的加密逻辑。这会导致反序列化后的LoginModel要么持有明文(而非加密后的值),要么持有加密值但缺少对应的加密上下文,最终解密失败。

内容的提问来源于stack exchange,提问作者3xGuy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:55:14