2016-08-23 5 views
-1

暗号化ノードモジュールを使用してnodejs app.Iamを使用してjsonオブジェクトのキー値のみを暗号化しようとしている。jsonオブジェクトを渡す。複雑なやり方で、値の中に再びキー値のペアを持つことができます)、レスポンスとして最初は同じ形式のjsonを取得する必要がありますが、キー値をenctypedする必要があります。 私のコードでは、data.Hereを暗号化する暗号化機能を持っています。ここでは、iamが行うことができる関数にkeyvalueを渡し、暗号化されたdata.Iamを取得することができます(つまり、JsonDataのvar exKey)各キー値を関数に渡します。そして、このコードを使用して再びjson形式に戻します。jsonキー値のみを暗号化し、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.Butを使用している場合(例えば、キー値他のキーと値のペアの内側に)これは、我々は、このようなおよび反復を持っているかどうかを確認する必要があるので、これは動作しません罰金です私はコードを変更しました。次に、ループを反復し、キー値を暗号化するために、私ができる関数を使用した後、「追加することによって、キーと値を慰めIAM

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を通過していた場合:

コンソールでは、私は得るでしょう

{0} {0} {0} {0} {0} {0} {0} {0} {0} {0} {0} {0}

"brokerLimit": "51de" "traderType":{ "保険会社": "0e81dc9e" "コーブR「:」068fc79922" 『isSplitPayment』: 『ループの内側に移動して、キー値を暗号化するので、IAMのができ1d8bc7』

... しかし、今の事は、私はJSON形式で応答としてこれを取得したいです

すなわち

{ "brokerLimit": "51de"、 "traderType": { "保険": "0e81dc9e"、 "表紙": "068fc79922は"}、 "isSplitPayment": "1d8bc7"}

だから私は必要暗号化されたキー値を変数に格納するには、 "、:、}を追加してjsonフォーマットにします。ここで問題に直面します。キーにjsonのプロパティがある場合、キー値は機能に戻ります。その時私は一時的に貯蓄する必要があると思う私たちは別のグローバル変数に追加して、グローバル変数に追加し続ける必要があります...しかし、私はロジックを修正することができませんでした。誰かがこれで私を助けることができます..私の質問が明確であることを願っています。私。

+0

「アルゴリズム」とは何か? – zaph

+0

あなたが探している言葉は反復であり反復ではありません。 –

+0

@zaph aesアルゴリズム –

答えて

0

最も簡単な方法は、おそらく暗号化されたデータで新しいオブジェクトを作成し、次にJSON.stringify(obj)を使用してJSON文字列を生成することです。

+0

JSON.stringifyは動きました。しかし、別の問題が残っています.Iamは文字列値のみを暗号化できます(つまり、 ""内の値のみ)。ブール値または数値の場合は渡すことができませんfunction..So私は各ループの前に、すべてのキー値を文字列型に変換してforループに渡す必要があると思います。 –

+0

'JSON.stringify()'も使用できますが、未定義の値は結果が未定義になります。特定の処理の第2引数として関数を指定することもできます。参考までにhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringifyを参照してください。あなたの場合は、オブジェクト全体をJSON.stringifyし、それを暗号化する方が良いでしょう。オブジェクトを復元するには、文字列を復号化し、その上で 'JSON.parse'を使います。 – vincent

関連する問題