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

C# AES加密中IV与密钥的在线解密报错问题咨询

AES加密在线工具解密失败的原因及解决办法

你的C#代码本身没有问题,密钥和IV的生成完全符合AES-256的要求(32字节密钥、16字节IV),解密失败的核心问题是你和在线工具的输入格式不匹配,具体原因和解决步骤如下:

1. 密钥/IV的输入格式错误

你控制台输出的Key和IV是Base64编码后的字符串,而在线工具默认可能将输入视为UTF-8字符串或十六进制字符串:

  • 如果工具要求输入32字节的原始密钥,直接输入Base64字符串会导致工具将其按UTF-8转成字节,长度远超过32,触发"密钥长度应为32"的报错。
  • 同理,IV的Base64字符串长度是22,工具如果按UTF-8转字节会超过16,触发IV长度错误。

解决办法:

  • 确认在线工具的编码选项,选择"Base64"作为密钥和IV的输入格式(大部分AES工具都支持)。
  • 若工具不支持Base64,将Base64编码的Key/IV解码为原始字节,再转成十六进制字符串输入。比如你的Key转十六进制是:dd99d0a31aaac0a8a0e6430a420425f07a785555084f01bae12d7d88d64e4416

2. 密文包含IV,工具需要纯密文

你的代码在加密时,会先把IV写入加密结果的前16字节(代码中msEncrypt.Write(aes.IV, 0, aes.IV.Length)),所以控制台输出的Encrypted是IV + 实际密文的组合。而在线工具需要的是不含IV的纯密文。

解决办法:
从你的加密结果中提取纯密文部分:

  • 你的Encrypted Base64:kO1nKUs08c/8mrlbHj3/xR43S5L3BJ5Ueg01xngw93I=
  • 前22个字符是IV的Base64(kO1nKUs08c/8mrlbHj3/xQ==),去掉后剩余的R43S5L3BJ5Ueg01xngw93I=就是纯密文的Base64,将其输入在线工具即可。

验证你的代码正确性

你的代码逻辑是标准的AES加密流程:

  • 使用RandomNumberGenerator生成安全的密钥和IV,符合密码学要求。
  • 加密时将IV附加到密文前,解密时读取前16字节作为IV,流程正确。
  • 控制台输出的加密解密结果正常,说明代码本身没有问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 08:35:20