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

Node.js中encryptAllValuesFromObject函数的JSON处理逻辑及输出咨询

Node.js加密函数处理JSON数据的输出解析

函数逻辑说明

先看你提供的这个加密函数:

function encryptAllValuesFromObject(body, key) {
    var bodyEnc = __assign({}, body);
    var parametersNames = Object.keys(body);
    parametersNames.forEach(function (parameter) {
        bodyEnc[parameter] = crypto_js_1.AES.encrypt(typeof (body[parameter]) !== 'string' ? JSON.stringify(body[parameter]) : body[parameter], key).toString();
    });
    return bodyEnc;
}

它的处理规则很明确:

  • 先复制一份输入的JSON对象,避免修改原数据
  • 遍历原JSON的第一层所有键名(也就是origin、destiny、subject、amount、softToken这些)
  • 对每个键对应的值做判断:
    • 如果值不是字符串(比如origin、destiny这类嵌套对象),先把值转成JSON字符串,再用给定的AES密钥加密
    • 如果值本身就是字符串,直接用密钥加密
  • 最后把加密后的结果转成字符串,替换复制对象里对应键的值,返回这个加密后的对象。

输入JSON示例

{
   "origin": {
      "typeId": "RUT",
      "numberId": "13501153-3",
      "accountId": "50010789193",
      "productId": "5",
      "subProductId": "5-202"
   },
   "destiny": {
      "typeId": "RUT",
      "numberId": "12870857-k",
      "name": "Prueba",
      "email": "prueba@gmail.com",
      "bankCode": "051",
      "bankDesc": "Banco Falabella",
      "accountId": "10012461337",
      "accountTypeId": "1",
      "accountDesc": "Cuenta Corriente",
      "isFavourite": true,
      "isNewContact": true,
      "saveContact": true
   },
   "subject": "Prueba Transferencia Mobile",
   "amount": "1",
   "softToken": "123456"
}

输出格式说明

按照函数逻辑和预期输出示例,输出的JSON结构和输入完全一致,但每个第一层键对应的值都会变成AES加密后的字符串,类似这样:

{
   "origin": "U2FsdGVkX1+abcdefghijklmnopqrstuvwxyz...",
   "destiny": "U2FsdGVkX1+ABCDEFGHIJKLMNOPQRSTUVWXYZ...",
   "subject": "U2FsdGVkX1+1234567890...",
   "amount": "U2FsdGVkX1+qwerty...",
   "softToken": "U2FsdGVkX1+asdfgh..."
}

注:上面的加密字符串是示例格式,实际内容会根据你使用的AES密钥不同而变化。

内容的提问来源于stack exchange,提问作者Hans López

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:26:06