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
相关产品推荐
相关产品推荐

