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

.Net Core 实现与 CryptoJS.AES.encrypt 等效加密功能咨询

等效CryptoJS AES加密的.NET Core实现方案

你更新后的代码还存在三处核心问题导致加密结果不一致,修正方案如下:

问题原因

  1. 未显式指定AES加密参数,不同运行环境的默认配置可能存在差异
  2. 用StreamWriter直接写入字符串时,默认UTF8编码可能携带BOM头,和CryptoJS直接将字符串转UTF8字节的逻辑不匹配
  3. 未校验密钥、IV长度是否符合128位AES的要求(需各占16字节)

修正后可直接使用的代码

using System.Security.Cryptography;
using System.Text;

public string RequestHash(string text, string keyString, string ivString)
{
    // 转换密钥和IV为UTF8字节,确保长度符合128位AES要求
    byte[] key = Encoding.UTF8.GetBytes(keyString);
    byte[] iv = Encoding.UTF8.GetBytes(ivString);
    
    if (key.Length != 16)
        throw new ArgumentException("密钥必须为16位字符(UTF8编码后16字节,对应128位密钥长度)");
    if (iv.Length != 16)
        throw new ArgumentException("IV必须为16位字符(UTF8编码后16字节)");

    using (Aes aesAlg = Aes.Create())
    {
        // 显式指定和JS侧完全一致的配置:CBC模式、Pkcs7填充
        aesAlg.Mode = CipherMode.CBC;
        aesAlg.Padding = PaddingMode.PKCS7;
        aesAlg.Key = key;
        aesAlg.IV = iv;

        // 直接将明文转UTF8字节写入加密流,避免BOM问题
        using (ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV))
        using (MemoryStream msEncrypt = new MemoryStream())
        using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
        {
            byte[] plainTextBytes = Encoding.UTF8.GetBytes(text);
            csEncrypt.Write(plainTextBytes, 0, plainTextBytes.Length);
            csEncrypt.FlushFinalBlock();
            byte[] encryptedBytes = msEncrypt.ToArray();
            // 直接返回密文Base64编码,和CryptoJS.encrypt.toString()结果一致
            return Convert.ToBase64String(encryptedBytes);
        }
    }
}

调用时注意事项

  • JS侧的key1和C#侧的keyString必须完全一致,长度为16个字符
  • JS侧的key2和C#侧的ivString必须完全一致,长度为16个字符
  • C#侧传入的text参数必须等于JS侧myData.substr(0, myData.length - 1)的处理结果,两边输入文本完全一致才能得到相同的加密输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 10:00:04