问题用Node.js加密模块解密

时间:2019-07-08 12:22:00

标签: node.js cryptography

Node.js版本:11.13.0 操作系统:Ubuntu 18.04.2 LTS(代号:bionic)

我尝试使用填充文件RSA_PKCS1_PADDING使用加密技术通过文件系统中的公共密钥对数据进行加密。 效果很好,但是我无法使用相同的填充来使用文件系统中的私钥解密结果。

下面,我的测试功能

var crypto = require('crypto');
var crt = crypto.createPrivateKey(fs.readFileSync(curPath + '/openssl/clinaccess.key.pem'));
 var keyProfile = crypto.createPublicKey(fs.readFileSync(curPath + '/openssl/merqurio_clinaccess_new.pub'));

exports.Crypt = function (req, res, next) {
    var data = req.param('data', '');

    if(data.length > 0){        

        var bufferEn = Buffer.from(data);
        var msg = crypto.publicEncrypt({ key: keyProfile, padding: crypto.constants.RSA_PKCS1_PADDING }, bufferEn).toString('base64');

        var bufferDe = Buffer.from(msg, 'base64');
        var dec = crypto.privateDecrypt({ key: crt, padding: crypto.constants.RSA_PKCS1_PADDING }, bufferDe).toString('utf8');

        res.end(dec);
      }
      else{
        res.status(401).end('Not authorized...');
    }
}

我希望获得原始数据,但是出现以下错误:

错误:0407109F:RSA例程:RSA_padding_check_PKCS1_type_2:pkcs解码错误

0 个答案:

没有答案