के साथ संदेश डिक्रिप्ट करने का प्रयास करते समय नोड-आरएसए त्रुटियां तो मैं एक वेबसाइट (एक असाइनमेंट के लिए) बनाने के लिए node-rsa और jsencrypt के साथ जावास्क्रिप्ट के साथ नोड का उपयोग करने का प्रयास कर रहा हूं जहां जावास्क्रिप्ट क्लाइंट द्वारा उत्पन्न सार्वजनिक कुंजी प्राप्त होती है सर्वर (नोड-आरएसए), उपयोगकर्ता द्वारा दर्ज किया गया संदेश (जेसेक्रिप्ट) एन्क्रिप्ट करता है, इसे सर्वर पर भेजता है और सर्वर को इसे डिक्रिप्ट करने के लिए सर्वर (node-rsa) प्राप्त करता है। कुंजी की पीढ़ी काम करती है, एन्क्रिप्शन काम करता है हालांकि डिक्रिप्शन नहीं करता है। जब मैं नोड स्क्रिप्ट मैं एन्क्रिप्शन के लिए निम्न कार्य करें ...निजी कुंजी
var NodeRSA = require('node-rsa');
var myDecrypter = new NodeRSA({b: 512});
शुरू क्लाइंट कुंजी अनुरोध करता है (मैं एक्सप्रेस उपयोग कर रहा हूँ) के बाद भाग गया है।
app.get('/getPublicKey', function(req, res){
var publicKeyJson = {"Key": ""};
console.log(myDecrypter.exportKey('public'));
publicKeyJson.Key = myDecrypter.exportKey('public');
res.json(JSON.stringify(publicKeyJson));
});
ग्राहक तो इस तरह कि कुंजी की बचत होती है ...
var myEncrypter = new JSEncrypt();
var myJson = "";
$.getJSON("getPublicKey", function(data) {
myJson = JSON.parse(data).Key;
setKey();
});
function setKey() {
myEncrypter.setPublicKey(myJson);
}
जब मैं एन्क्रिप्ट और ग्राहक मैं यह करने पर संदेश भेजने के लिए मिल गया ...
function messageEncrypt() {
message = document.getElementById("message").value;
var encrypted = myEncrypter.encrypt(message);
myMessage = {"username": "", "userId": 0.0, "message": ""};
myMessage.username = me.username;
myMessage.userId = me.userId;
myMessage.message = encrypted;
console.log(encrypted);
$.post("sendMessage", myMessage);
}
जब सर्वर को संदेश प्राप्त होता है तो यह होता है, यह वह जगह है जहां मुझे त्रुटियां मिलती हैं।
app.post('/sendMessage', function(req, res){
var message = req.body;
var user = message.username;
var id = message.userId;
console.log("What a mess, " + user + " said " + message.message + " what on earth does that mean");
//This line below errors
var clearMessage = myDecrypter.decrypt(message.message, 'utf8');
console.log(user + " said " + clearMessage);
});
त्रुटि मैं है ...
Error: Error during decryption (probably incorrect key). Original error: Error: error:040A1079:rsa routines:RSA_padding_check_PKCS1_OAEP_mgf1:oaep decoding error
at Error (native)
at NodeRSA.module.exports.NodeRSA.$$decryptKey (/home/node_modules/node-rsa/src/NodeRSA.js:295:19)
at NodeRSA.module.exports.NodeRSA.decrypt (/home/node_modules/node-rsa/src/NodeRSA.js:243:21)
at /home/securechat/securechat.js:36:36
at Layer.handle [as handle_request] (/home/node_modules/express/lib/router/layer.js:95:5)
at next (/home/node_modules/express/lib/router/route.js:131:13)
at Route.dispatch (/home/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/home/node_modules/express/lib/router/layer.js:95:5)
at /home/node_modules/express/lib/router/index.js:277:22
at Function.process_params (/home/node_modules/express/lib/router/index.js:330:12)
यहाँ हालांकि जहां यह दिलचस्प हो जाता है, इसके बाद के संस्करण मैं का एक निजी कुंजी था कि त्रुटि संदेश प्राप्त करने के लिए है ...
-----BEGIN RSA PRIVATE KEY-----
MIIBOgIBAAJBAIhdx31QICGN1LKRW4WngeL3RtzPh7cEHmhFJB8m4bQUSTcSi4eg
sUvMeZkWyaF9gOxtZKzk5TI6q+8hg8TY6S8CAwEAAQJASds423cVH/c4NsqhXh8e
KvYwjBFeeNIjQegIq1KctbHmKNM5MMb4jnDqdY/S5XHHS22EGvLNheLgV8tlRjwG
UQIhANpNmbl215eOsGPJ0jqz1XPMBrO35V6I3P04kvr66R1JAiEAn+oL0jtAFETR
4PRfenye5MAu9US3V5MoDN8xUoEvKrcCIQDQT2ZWNNIrHAyzXB2QyJPxqInoqp1j
5QPDWl3ewtj5iQIgY3E1nKw/stsA8LTGUvMAFBv2l4r9wDXAaBC7KSUwYY0CIAj4
0gA9etDbPm3H/XDwK4WXs9mXkKroyxewkWoOoAw/
-----END RSA PRIVATE KEY-----
और ग्राहक को भेजा सार्वजनिक कुंजी था ...
-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIhdx31QICGN1LKRW4WngeL3RtzPh7cE
HmhFJB8m4bQUSTcSi4egsUvMeZkWyaF9gOxtZKzk5TI6q+8hg8TY6S8CAwEAAQ==
-----END PUBLIC KEY-----
एन्क्रिप्ट किए गए संदेशों (stackoverflow) था ...
XDViV0InCSnpyBxbNu5Herut0JYSsp87buvhzM4g2f9z3khIx2zA8Ou0Uq0TtmqtvBBVtZi5wZbcS6em/vB78g==
दिलचस्प बात यह है कि जब मैं jsencrypt वेबसाइट पर demo इस्तेमाल किया और मेरी निजी कुंजी के साथ-साथ एन्क्रिप्टेड संदेश में प्रवेश किया है तो सही decrypted संदेश मिलता है।
तो मेरे सवाल ...
मुझे अपने नोड आरएसए डिक्रिप्शन के साथ कुछ गलत कर रहा हूँ है ???
यदि आपको अब जानकारी/कोड की आवश्यकता है तो कृपया इसे नीचे दी गई टिप्पणियों में रखें।
संभवतः बी/सी आपका उदाहरण जटिल है। इसे आसान बनाएं और हमें एक असफल jsfiddle.net – Oleander