node-rsa-Fehler beim entschlüsseln der Nachricht mit privaten Schlüssel

So, ich habe versucht, verwenden Sie den Knoten mit node-rsa und javascript mit jsencrypt um eine website zu erstellen (für einen Auftrag), wo der javascript-client bekommt den öffentlichen Schlüssel vom server generiert (node-rsa) verschlüsselt, der die Nachricht (jsencrypt), die der Benutzer eingegeben hat, sendet es an den server und bekommt die server zu entschlüsseln (node-rsa). Die Erzeugung der Schlüssel funktioniert, die Verschlüsselung funktioniert allerdings die Entschlüsselung nicht. Wenn ich starten Sie den Knoten Skript ich den folgenden für die Verschlüsselung...

var NodeRSA = require('node-rsa');
var myDecrypter = new NodeRSA({b: 512});

Wenn die client-Anfragen der Schlüssel (ich bin mit express) ist an folgende ran.

app.get('/getPublicKey', function(req, res){
    var publicKeyJson = {"Key": ""};
    console.log(myDecrypter.exportKey('public'));
    publicKeyJson.Key = myDecrypter.exportKey('public');
    res.json(JSON.stringify(publicKeyJson));
});

Client speichert dann, dass der Schlüssel so...

var myEncrypter = new JSEncrypt();
var myJson  = "";
$.getJSON( "getPublicKey", function( data ) {
    myJson = JSON.parse(data).Key;
        setKey();
});
function setKey() {
    myEncrypter.setPublicKey(myJson);
}

Wenn ich habe zu verschlüsseln und senden Sie die Nachricht auf dem client kann ich dies tun...

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

Wenn der server eine Nachricht empfängt, dies ist, was passiert, das ist, wo bekomme ich die Fehler.

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

Den Fehler den ich bekomme, ist ...

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)

Hier jedoch, wo es interessant wird, zu bekommen, dass die Fehlermeldung oben hatte ich einen privaten Schlüssel...

-----BEGIN RSA PRIVATE KEY-----
MIIBOgIBAAJBAIhdx31QICGN1LKRW4WngeL3RtzPh7cEHmhFJB8m4bQUSTcSi4eg
sUvMeZkWyaF9gOxtZKzk5TI6q+8hg8TY6S8CAwEAAQJASds423cVH/c4NsqhXh8e
KvYwjBFeeNIjQegIq1KctbHmKNM5MMb4jnDqdY/S5XHHS22EGvLNheLgV8tlRjwG
UQIhANpNmbl215eOsGPJ0jqz1XPMBrO35V6I3P04kvr66R1JAiEAn+oL0jtAFETR
4PRfenye5MAu9US3V5MoDN8xUoEvKrcCIQDQT2ZWNNIrHAyzXB2QyJPxqInoqp1j
5QPDWl3ewtj5iQIgY3E1nKw/stsA8LTGUvMAFBv2l4r9wDXAaBC7KSUwYY0CIAj4
0gA9etDbPm3H/XDwK4WXs9mXkKroyxewkWoOoAw/
-----END RSA PRIVATE KEY-----

und den öffentlichen Schlüssel an den client gesendet wurde...

-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIhdx31QICGN1LKRW4WngeL3RtzPh7cE
HmhFJB8m4bQUSTcSi4egsUvMeZkWyaF9gOxtZKzk5TI6q+8hg8TY6S8CAwEAAQ==
-----END PUBLIC KEY-----

Die verschlüsselten Nachrichten (stackoverflow) war ...

XDViV0InCSnpyBxbNu5Herut0JYSsp87buvhzM4g2f9z3khIx2zA8Ou0Uq0TtmqtvBBVtZi5wZbcS6em/vB78g==

Das interessante an der Sache ist, dass wenn ich demo auf jsencrypt website, und geben meine private Schlüssel als auch die verschlüsselte Nachricht bekomme ich die richtige entschlüsselte Nachricht.

Also meine Frage ist...

Was mache ich falsch mit meinem node-rsa-Entschlüsselung???

Wenn Sie brauchen mehr Informationen/code bitte legen Sie es in den Kommentaren unten.

  • Wahrscheinlich b/c Ihr Beispiel ist zu Komplex. Machen Sie es einfacher und für uns mit einer fehlgeschlagenen jsfiddle.net
Schreibe einen Kommentar