2017-03-21 7 views
0

ノードJSのテキストをノードRSAで暗号化し、JSEncryptライブラリが使用しているクライアント(javascript)に渡しますが、暗号化されたメッセージはnullになります。公開鍵と秘密鍵は、公開鍵で暗号化し、JavaScript側で秘密鍵で解読する、nodeJSサーバーで開発中です。JDKの暗号化とJavascriptの復号化

これは正しく起こらない!!!!

nodejs(Node-RSAを使用)から来るメッセージを解読するために、javascriptでどのライブラリを使うべきか誰にでも伝えることができます。

私たちは既にHTTPSを使用していますが、私たちのユースケースは、それと信頼されていないブローカーとの間にブローカーがあり、私たちはそれを使用することを余儀なくされています。私たちはクライアント側の人々を信頼しているので、クライアント側で解読しています。

+0

なぜHTTPSを使用しないのですか?あなたのソリューションにはセキュリティ上のリスクが伴います。どのようにしてブラウザに秘密鍵を送信/格納しますか?プレーンなHTTPを使うつもりですか? – pedrofb

+0

私たちはすでにHTTPSを使用していますが、私たちのユースケースは、そのブローカーと信頼されていないブローカーの間にブローカーがあり、私たちはそれを使用することを余儀なくされているためです..暗号の復号化を使用したいと思います。私たちのクライアント側の人たち、私たちはクライアント側で解読しています。 – striker0794

+0

これは重要な説明です。しかし、ブローカが信頼されていない場合、ブローカがネットワークを盗聴する可能性があるため、プライベートキーをクライアントに送信することはできません。そうですか? – pedrofb

答えて

-1

その組み込みcrytoライブラリを持っているNodejsが、それは最適化され、テストされ、それを使用することをお勧めします。https://nodejs.org/api/crypto.html

+0

OPは、暗号モジュールを持たないプレーンJavaScriptと相互運用したいという問題があります。私はまた、暗号モジュールがキー生成のようなOPが必要とするすべての機能を提供するのではないかと疑う。 –

1

私がdedcryptし

import CryptoBrowserify from 'crypto-browserify'; 
public encryptStringWithRsaPublicKey(data: string, publicKey: string): string { 
     var encrypted = CryptoBrowserify.publicEncrypt(publicKey,new Buffer(data)); 
     return encrypted.toString('Base64'); 
    } 

および暗号のjavascriptで(クライアント側)を暗号化するためにCryptoBrowserifyを使用Nodejs

decrypt = function(privateKey, data) { 
     var crypto = require('crypto'); 
     var buffer = new Buffer(data, 'base64'); 
     var decrypted = crypto.privateDecrypt(privateKey, buffer); 
     return decrypted.toString('utf8') 

    }; 
+0

私は同様のことを達成しようとしていますが、動作していません.Pswdをクライアント側で暗号化しています.NodeJS上の復号化が機能しません。 ** Javascript:** var user_pswd = CryptoJS.AES.encrypt( 'encryptMe'、 'my secret'); ** NodeJS ** var crypto = require( 'crypto'); console.log( "post req.body:"、req.body.un); //これは暗号化されたメッセージを表示します var decipher = crypto.createDecipher( 'aes'、 'my secret'); var dec = decipher.update(req.body.un、 'hex'、 'utf8'); dec + = decipher.final( 'utf8'); console.log( '復号化されたユーザー名:'、dec); 出力が表示されず、プログラムがジャムするだけです。 –

+1

RsAではなくAESを使用しています。 AESの場合、CryptoJSはクライアント側とサーバ側で動作するはずです。これらのサンプルコードはRSA –

+0

で動作します。そうです。私はすでに(私は他の選択肢がなかったので)同じようにソートしました。あなたの答えは正しいです。 –