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

AES加密报CryptographicException:密钥长度无效,求排查错误原因

问题分析与解决:AES密钥长度不符合要求异常

你遇到的System.Security.Cryptography.CryptographicException: '指定的密钥不符合该算法的有效长度。'异常,核心问题出在密钥的转换逻辑上,咱们来拆解一下:

问题根源

你定义的key是一个64字符的十六进制字符串,而256位AES要求的密钥是**32字节(256位)**的二进制数据。但你用ASCIIEncoding.ASCII.GetBytes(key)转换时,会把每个字符(比如'd'、'7')都单独转成一个ASCII字节,64个字符就变成了64字节——这显然超出了256位AES的密钥长度要求,所以抛出了异常。

修正方案

需要把十六进制字符串直接解析成对应的二进制字节数组,而不是按ASCII编码转换。这里提供两种实现方式:

方式1:自定义辅助方法转换

string key = "d771815a7f74ebfaa2d44f8b7654fa19e7a02452c2ab351d222e49297910a814";
AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
aes.Padding = PaddingMode.None;
aes.Mode = CipherMode.ECB;
aes.BlockSize = 128;
aes.KeySize = 256;
// 将十六进制字符串转为32字节的密钥
aes.Key = HexStringToByteArray(key);

// 辅助方法:十六进制字符串转字节数组
private static byte[] HexStringToByteArray(string hex)
{
    if (hex.Length % 2 != 0)
        throw new ArgumentException("十六进制字符串长度必须是偶数");
    
    byte[] result = new byte[hex.Length / 2];
    for (int i = 0; i < hex.Length; i += 2)
    {
        result[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
    }
    return result;
}

方式2:使用.NET内置方法(.NET 5+)

如果你的项目基于.NET 5或更高版本,可以直接用Convert.FromHexString简化转换:

string key = "d771815a7f74ebfaa2d44f8b7654fa19e7a02452c2ab351d222e49297910a814";
AesCryptoServiceProvider aes = new AesCryptoServiceProvider();
aes.Padding = PaddingMode.None;
aes.Mode = CipherMode.ECB;
aes.BlockSize = 128;
aes.KeySize = 256;
// 直接用内置方法转换十六进制字符串
aes.Key = Convert.FromHexString(key);

额外建议

  1. 过时API替换:AesCryptoServiceProvider在.NET Core和.NET 5+中已被标记为过时,推荐使用更通用的Aes.Create()来创建AES实例,兼容性更好:
    using Aes aes = Aes.Create();
    aes.Padding = PaddingMode.None;
    aes.Mode = CipherMode.ECB;
    aes.BlockSize = 128;
    aes.KeySize = 256;
    aes.Key = Convert.FromHexString(key);
    
  2. 加密模式安全性:ECB模式是不安全的加密模式(相同明文会生成相同密文,容易被破解),除非有特殊的兼容需求,否则建议使用CBC、GCM等更安全的模式,同时记得使用随机初始化向量(IV)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 14:07:54