2016-08-23 3 views
-1

Iam versucht, nur den Schlüsselwert von JSON-Objekt mit NodeJs-App.Iam mit Krypto-Node-Modul zu verschlüsseln.Ich werde JSON-Objekt übergeben (es kann einfach sein oder komplex, z. B. innerhalb eines Wertes können wir wieder ein Schlüsselwertpaar haben), dann sollten wir als Antwort dasselbe json im gleichen Format bekommen, das wir anfangs geben, aber der Schlüsselwert sollte enctyped sein. In meinem Code habe ich eine Verschlüsselungsfunktion, die die Daten verschlüsseln wird. Hier sollte ich nur den Schlüsselwert an die Funktion übergeben, die iam in der Lage ist, verschlüsselte Daten zu verwenden und zurück zu bekommen. Ich benutze für jedes ie für (var exKey in JsonData) und Übergeben Sie jeden Schlüsselwert an die Funktion.Und wieder Framing es wieder in JSON-Format mit diesem Code.Verschlüsseln Sie nur JSON-Schlüsselwert und erhalten Sie die Antwort des gesamten JSON-Objekts mit Schlüsselwert verschlüsselt

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

Das ist in Ordnung, wenn wir grundlegende json.But verwenden, wenn wir komplexe verwenden (z. B. innerhalb KEYVALUE andere Schlüsselwertpaar), wird dies nicht funktionieren, da wir sehen müssen, ob wir solche und Iterierte haben Funktion.So habe ich Änderungen an Code.

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

nun die Funktion ich in der Lage, die Schleife zu durchlaufen und die keyvalue verschlüsseln und dann iam den Schlüssel und Wert durch den Zusatz“, tröstend:., { Zum Beispiel, wenn ich vorbei json als:

{"brokerLimit": "50", "trairtType": {"Versicherer": "John", "Cover": "Basic"}, "isSplitPayment": "Ja"} Dann auf Konsole bekomme ich

"brokerLimit": "51de" "HändlerTyp": { "Versicherer": "0e81dc9e" "Bucht r „:“ 068fc79922" ‚isSplitPayment‘: ‚1d8bc7‘

So Iam Lage Looping zu gehen und den Schlüsselwert zu verschlüsseln .. Aber jetzt ist die Sache, die ich dies als Antwort im JSON-Format, dh

erhalten möchten

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

Also ich brauche Um den verschlüsselten Schlüsselwert in Variable zu speichern, muss ich auch ",:," hinzufügen, um es im JSON-Format zu machen. Hier steht Iam vor dem Problem. Wenn der Schlüssel eine Eigenschaft in JSON hat, geht der Schlüsselwert zurück zur Funktion. Zu dieser Zeit denke ich, dass wir in Temp sparen müssen orary Variable und dann müssen wir zu einer anderen globalen Variable hinzufügen und dann weiter zu globalen Variable hinzufügen ... Aber ich konnte nicht die Logik reparieren..Kann jemand mir dabei helfen .. Hoffe meine Frage ist klar.Wenn nicht antworten mich.

+0

Aus Neugier was ist 'Algorithmus'? – zaph

+0

Das Wort, nach dem Sie suchen, ist Rekursion und nicht Iteration. –

+0

@zaph AES-Algorithmus –

Antwort

0

Der einfachste Weg ist wahrscheinlich, ein neues Objekt mit den verschlüsselten Daten zu erstellen und dann JSON.stringify(obj) zu verwenden, um den JSON-String zu generieren.

+0

JSON.Stringify hatte funktioniert. Aber immer noch mit einem anderen Problem.Iam in der Lage, nur String-Wert zu verschlüsseln (dh, nur den Wert innerhalb "") .But für boolean oder Zahl, es kann nicht übergeben werden Funktion..So denke ich vorher für jede Schleife müssen wir alle Schlüsselwerte in String-Typ konvertieren und an For-Schleife übergeben können Sie dabei helfen. –

+0

Sie können 'JSON.stringify()' auch dafür verwenden, aber ein undefinierter Wert führt zu einem undefinierten Ergebnis. Sie können auch eine Funktion als zweites Argument für die spezifische Behandlung angeben. Eine Referenz finden Sie unter https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify. Für Ihren Fall ist es wahrscheinlich besser, JSON.string das ganze Objekt und dann verschlüsseln es. Um das Objekt wiederherzustellen, entschlüsseln Sie die Zeichenfolge und verwenden dann 'JSON.parse' darauf. – vincent

Verwandte Themen