Я пытаюсь зашифровать только значение ключа объекта json с помощью приложения nodejs. Я использую модуль криптоузла. Я передам объект 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": {"страховщик":"john","cover":"basic" }, "isSplitPayment":"yes"} Тогда на консоли я получу
"brokerLimit":"51de" "traderType":{ "insurer":"0e81dc9e" "cover":"068fc79922" "isSplitPayment":"1d8bc7"
Итак, я могу войти в цикл и зашифровать значение ключа. Но теперь дело в том, что я хочу получить это как ответ в формате json, т.е.
{"brokerLimit":"51de","traderType": {"страховщик":"0e81dc9e","cover":"068fc79922" }, "isSplitPayment":"1d8bc7"}
Поэтому мне нужно сохранить зашифрованное значение ключа в переменной, также к этому мне нужно добавить ",:,}, чтобы сделать его в формате json. Здесь я столкнулся с проблемой. Если ключ имеет свойство в json, то значение ключа возвращается для функции. В то время я думаю, что нам нужно сохранить во временной переменной, а затем нам нужно добавить к другой глобальной переменной, а затем продолжить добавление к глобальной переменной... Но я не мог исправить логику.. Может кто-нибудь мне помочь в этом .. Надеюсь, мой вопрос понятен. Если не ответить мне.
algorithm
? - person zaph   schedule 23.08.2016