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解码错误