Enkripsi hanya nilai kunci json dan dapatkan respons seluruh objek json dengan nilai kunci terenkripsi

Saya mencoba mengenkripsi hanya nilai kunci objek json menggunakan aplikasi nodejs. Saya menggunakan modul simpul kripto. Saya akan meneruskan objek json (bisa berupa dasar atau kompleks, yaitu, di dalam suatu nilai kita dapat kembali memiliki pasangan nilai kunci) lalu sebagai respon kita harus mendapatkan json yang sama dalam format yang sama yang kita berikan pada awalnya, tetapi nilai kuncinya harus dientipekan. Dalam kode saya, saya memiliki fungsi enkripsi yang akan mengenkripsi data. Di sini saya hanya boleh meneruskan nilai kunci ke fungsi tersebut, yang dapat saya lakukan dan mendapatkan kembali data terenkripsi. Saya menggunakan untuk masing-masing yaitu untuk (var exKey di JsonData) dan meneruskan setiap nilai kunci berfungsi. Dan sekali lagi membingkainya kembali ke format json menggunakan kode ini.

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+"}";

Ini baik-baik saja jika kita menggunakan json dasar. Tetapi jika kita menggunakan kompleks (misalnya, di dalam nilai kunci pasangan nilai kunci lainnya) ini tidak akan berfungsi karena kita perlu melihat apakah kita memiliki fungsi seperti itu dan mengulanginya. Jadi saya membuat perubahan pada kode.

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;
  } 

Sekarang menggunakan fungsi tersebut saya dapat mengulangi loop dan mengenkripsi nilai kunci dan kemudian saya menghibur kunci dan nilai dengan menambahkan ",:,{. Misalnya jika saya meneruskan json sebagai:

{"brokerLimit":"50","traderType": {"insurer":"john","cover":"basic" }, "isSplitPayment":"yes"} Lalu di konsol saya akan mendapatkan

"brokerLimit":"51de" "traderType":{ "penanggung":"0e81dc9e" "cover":"068fc79922" "isSplitPayment":"1d8bc7"

Jadi saya bisa masuk ke dalam loop dan mengenkripsi nilai kuncinya.. Tapi sekarang masalahnya adalah saya ingin mendapatkan ini sebagai respons dalam format json yaitu

{"brokerLimit":"51de","traderType": {"insurer":"0e81dc9e","cover":"068fc79922" }, "isSplitPayment":"1d8bc7"}

Jadi saya perlu menyimpan nilai kunci terenkripsi dalam variabel, juga saya perlu menambahkan ",:,} untuk membuatnya dalam format json. Di sini saya menghadapi masalah. Jika kunci memiliki properti di json maka nilai kuncinya kembali agar berfungsi. Pada saat itu saya pikir kita perlu menyimpan dalam variabel sementara dan kemudian kita perlu menambahkan ke variabel global lain dan kemudian terus menambahkan ke variabel global...Tetapi saya tidak dapat memperbaiki logikanya..Dapatkah seseorang membantu saya dalam ini..Semoga pertanyaan saya jelas. Jika tidak balas saya.


person H Varma    schedule 23.08.2016    source sumber
comment
Karena penasaran apa itu algorithm?   -  person zaph    schedule 23.08.2016
comment
Kata yang Anda cari adalah rekursi dan bukan iterasi.   -  person Artjom B.    schedule 23.08.2016
comment
@zaph aes algoritma   -  person H Varma    schedule 24.08.2016


Jawaban (1)


Cara termudah mungkin dengan membuat objek baru dengan data terenkripsi, lalu menggunakan JSON.stringify(obj) untuk menghasilkan string JSON.

person vincent    schedule 23.08.2016
comment
JSON.stringify telah berhasil. Tetapi masih ada masalah lain. Saya hanya dapat mengenkripsi nilai string (yaitu, hanya nilai di dalamnya). Tetapi untuk boolean atau angka, itu tidak dapat diteruskan ke fungsi..Jadi saya pikir sebelumnya untuk setiap loop kita perlu mengonversi semua nilai kunci menjadi tipe string dan meneruskannya ke loop for, bisakah Anda membantu dalam hal ini. - person H Varma; 25.08.2016
comment
Anda dapat menggunakan JSON.stringify() untuk itu juga, tetapi nilai yang tidak ditentukan akan menghasilkan hasil yang tidak ditentukan. Anda juga dapat menentukan fungsi sebagai argumen kedua untuk penanganan spesifik. Lihat developer.mozilla.org/en-US /docs/Web/JavaScript/Reference/ untuk referensi. Untuk kasus Anda, mungkin lebih baik JSON.stringify seluruh objek dan kemudian mengenkripsinya. Untuk memulihkan objek, dekripsi string dan kemudian gunakan JSON.parse di atasnya. - person vincent; 26.08.2016