只加密json密钥值,并获得整个json对象的响应与密钥值加密

Encrypt only json key value and get response of whole json object with keyvalue encrypted

本文关键字:密钥 json 加密 对象 响应      更新时间:2023-09-26

我试图使用nodejs应用程序加密json对象的密钥值。我使用加密节点模块。我会传递json对象(它可以是基本的或复杂的,即。,在一个值里面,我们可以再次有键值对)然后作为响应,我们应该得到相同的json格式,我们最初给出,但键值应该被加密。在我的代码中,我有一个加密函数,它将加密数据。在这里,我应该只将键值传递给函数,我可以这样做并获得加密的数据。我使用每个即(var exKey在JsonData)和传递每个键值的功能。并再次使用此代码将其帧回json格式。

var JsonData=JSON.parse(req.headers.jsondata);
var enc=null;  
for(var exKey in JsonData) {
var encryptData=encrypt(JsonData[exKey]);
if(enc!= null)
enc= enc+","+ '"'+ exKey+'"'+":"+encryptData;
else
enc="{"+'"'+exKey+'"' +":"+encryptData; 
}
enc=enc+"}";

如果我们使用的是基本json,这是可以的。但是如果我们用复数(例如。这将不工作,因为我们需要看看我们是否有这样的迭代函数。所以我修改了代码。

function iterate(JsonData)
{
 for(var exKey in JsonData) {
 if (JsonData.hasOwnProperty(exKey)) {
    if(typeof JsonData[exKey]=="object"){
     console.log('"'+exKey+'"'+":"+"{");
      iterate(JsonData[exKey]);
 }
  else
 {
  var encrypted=encrypt(JsonData[exKey]);
  console.log('"'+exKey+'"'+":"+ '"'+encrypted+'"');
 }
 }
 }
  function encrypt(text){
  var cipher = crypto.createCipher(algorithm,password);
  var crypted = cipher.update(text,'utf8','hex');
  crypted +=cipher.final('hex'); 
  return crypted;
  } 

现在使用函数我可以迭代循环并加密键值,然后我通过添加",:,{"来安慰键和值。例如,如果我传递json为:

{"brokerLimit":"50"、"traderType":{"保险公司":"约翰","覆盖":"基本"},"isSplitPayment":"是"}然后在控制台上我将得到

"brokerLimit":"51" traderType ": {"保险公司":"0 e81dc9e"覆盖":"068 fc79922"isSplitPayment":"1 d8bc7"

所以我可以进入循环并加密密钥值。现在我想要的是json格式的响应,也就是

{"brokerLimit":"51"、"traderType":{"保险公司":"0 e81dc9e","覆盖":"068 fc79922"},"isSplitPayment":"1 d8bc7"}

所以我需要将加密的密钥值存储在变量中,还需要添加",:,}以使其成为json格式。我现在面临的问题是。如果键在json中具有属性,则键值返回函数。那时,我认为我们需要保存临时变量,然后我们需要添加到另一个全局变量,然后继续添加到全局变量…但是我无法修复逻辑,有人能帮我吗,希望我的问题是清楚的。如果不回复我。

最简单的方法可能是使用加密数据创建一个新对象,然后使用JSON.stringify(obj)生成JSON字符串。