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

NodeJS Crypto与CryptoJS使用aes-256-cfb8加密结果不一致求解

问题根因

  • 输出格式配置错误:你当前使用的CryptoJS.format.OpenSSL会在密文前添加Salt前缀,和NodeJS Crypto直接输出原始密文转Base64的逻辑完全不匹配
  • CFB反馈段大小不匹配:NodeJS侧使用的aes-256-cfb8是8位反馈段的CFB模式,CryptoJS默认的CryptoJS.mode.CFB为128位反馈段,参数不匹配导致加密结果不一致

修复后的check3()方法代码

public check3(valueToEncrypt: string, secretKey: string): void {
    const hash = CryptoJS.MD5(secretKey);
    const md5Key: string = hash.toString(CryptoJS.enc.Hex)
    console.log("MD5 Value: ", md5Key); 

    const IV11 = CryptoJS.enc.Utf8.parse(Test3.DEFAULT_IV);
    const key11 = CryptoJS.enc.Utf8.parse(md5Key);
    const data = CryptoJS.enc.Utf8.parse(valueToEncrypt);

    const enc1 = CryptoJS.AES.encrypt(data, key11, { 
        iv: IV11,
        mode: CryptoJS.mode.CFB,
        padding: CryptoJS.pad.NoPadding,
        segmentSize: 8 // 新增配置:指定CFB模式为8位反馈段,对应aes-256-cfb8
    });
    // 修改输出逻辑:直接取原始密文转Base64,移除OpenSSL格式配置
    console.log("Cipher text11: ", enc1.ciphertext.toString(CryptoJS.enc.Base64));
}

修复后运行输出的密文将和NodeJS Crypto侧的结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 09:24:06