Node-RSA возможно неверный ключ - PullRequest
0 голосов
/ 14 марта 2019

Внешний интерфейс: Barrett.js, BigInt.js, RSA.js

Back-end: Node.js, Node-RSA


Я попытался использовать экспоненту (e) и модуль (n), которые из узла rsa, чтобы сгенерировать publicKey на странице.Затем используйте publicKey для шифрования моей строки.Наконец, я использую закрытый ключ для расшифровки строки со страницы, но у меня ничего не получается.Я получил ошибку типа 'Ошибка при расшифровке (возможно, неправильный ключ).Исходная ошибка: Ошибка: Неверные данные или ключ '.

Буду очень признателен, если кто-нибудь сможет помочь ~

Ниже приведены простые коды:

// rsa.pug

h2 n: 
#J_ComN #{n}
h2 e: 
#J_ComE #{e}
h2 Message:
#J_Message Hello RSA!

script(src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js")
script(src="/javascripts/rsa/Barrett.js")
script(src="/javascripts/rsa/BigInt.js")
script(src="/javascripts/rsa/RSA.js")
script(src="/javascripts/rsa.js")
// Front-end codes

var comN = document.getElementById('J_ComN').innerHTML; // n
var comE = document.getElementById('J_ComE').innerHTML; // e
var Message = document.getElementById('J_Message').innerHTML;

setMaxDigits(130); // 1024bits=130,2048bits=260
var publicKey = new RSAKeyPair(comE, '', comN); // n + e -> public key
console.log('publicKey:', publicKey);

var encodedMessage = encodeURIComponent(Message);
console.log('After encodeURIComponent:', encodedMessage);
var encryptedData = encryptedString(publicKey, encodedMessage);
console.log('After encrypting:', encryptedData);


$.ajax({
    url: '/rsa/encrypt',
    method: 'POST',
    data: {
        encryptedData: encryptedData
    }
}).then(function (res) {
    debugger;
}, function () {

});
// Back-end codes

const NodeRSA = require('node-rsa'); // Node RSA

const key = new NodeRSA({
    b: 1024
});
key.setOptions({
    encryptionScheme: 'pkcs1' // 'pkcs1_oaep' or 'pkcs1'. Default 'pkcs1_oaep'
});

const publicComponents = key.exportKey('components-public');
console.log('publicComponents: ', publicComponents);
// { n: <Buffer 00 bc ... >, e: 65537 }

const express = require('express');
const router = express.Router();

// rsa page
router.get('/', function (req, res, next) {

    var n = publicComponents.n.toString('hex'); // n -> hex
    var e = publicComponents.e.toString(16); // e -> hex


    res.render('rsa', {
        n: n,
        e: e
        // n: publicComponents.n,
        // e: publicComponents.e
    });
});

// decrypt the encrypted data
router.post('/encrypt', function (req, res, next) {
    var body = req.body;
    var encryptedData = body.encryptedData;

    console.log('Encrypted data:', encryptedData);

    // 'buffer', 'binary', 'hex' or 'base64'. Default 'buffer'.
    const decrypted = key.decrypt(encryptedData, 'utf8');
    console.log('decrypted: ', decrypted);

});
...