最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

无法在nodejs中使用RSAECBPKCS1正确加密数据

IT培训 admin 10浏览 0评论

无法在nodejs中使用RSA / ECB / PKCS1正确加密数据

我使用node-rsa软件包对数据进行如下加密

const crypto = require('crypto')
const NodeRSA = require('node-rsa')
const path = require("path")
const fs = require("fs")

const absolutePath = path.resolve('./public_key.pem')
const publicKey = fs.readFileSync(absolutePath, "utf8")

var key = new NodeRSA();
key.importKey(publicKey, 'pkcs8-public');
key.setOptions({environment: 'node', encryptionScheme: 'pkcs1'});
const result = key.encrypt('{"message": "hello"}', 'base64')

但是现在当我尝试如下解密结果时:

key.decryptPublic(result, 'utf-8')

我收到以下错误消息:

错误:解密期间出错(可能是不正确的密钥)。原版的错误:错误:错误:0407008A:rsa例程:RSA_padding_check_PKCS1_type_1:无效的填充在NodeRSA.module.exports.NodeRSA。$$ decryptKey(/home/runner/node_modules/node-rsa/src/NodeRSA.js:301:19)在NodeRSA.module.exports.NodeRSA.decryptPublic(/home/runner/node_modules/node-rsa/src/NodeRSA.js:267:21)在evalmachine.:16:17在Script.runInContext(vm.js:133:20)在Object.runInContext(vm.js:311:6)在评估时(/run_dir/repl.js:133:14)在ReadStream。 (/run_dir/repl.js:116:5)在ReadStream.emit(events.js:198:13)在addChunk(_stream_visible.js:288:12)在readAddChunk(_stream_visible.js:269:11)

我该如何解决?

谢谢。

回答如下:

您使用错误的密钥解密。

您应该使用私钥。

key.decrypt(buffer, [encoding]);

不是当前的公钥:

key.decryptPublic(buffer, [encoding]); // use public key for decryption

RSA通常作为公共流进行加密,通过私有进行解密。

无法在nodejs中使用RSA / ECB / PKCS1正确加密数据

我使用node-rsa软件包对数据进行如下加密

const crypto = require('crypto')
const NodeRSA = require('node-rsa')
const path = require("path")
const fs = require("fs")

const absolutePath = path.resolve('./public_key.pem')
const publicKey = fs.readFileSync(absolutePath, "utf8")

var key = new NodeRSA();
key.importKey(publicKey, 'pkcs8-public');
key.setOptions({environment: 'node', encryptionScheme: 'pkcs1'});
const result = key.encrypt('{"message": "hello"}', 'base64')

但是现在当我尝试如下解密结果时:

key.decryptPublic(result, 'utf-8')

我收到以下错误消息:

错误:解密期间出错(可能是不正确的密钥)。原版的错误:错误:错误:0407008A:rsa例程:RSA_padding_check_PKCS1_type_1:无效的填充在NodeRSA.module.exports.NodeRSA。$$ decryptKey(/home/runner/node_modules/node-rsa/src/NodeRSA.js:301:19)在NodeRSA.module.exports.NodeRSA.decryptPublic(/home/runner/node_modules/node-rsa/src/NodeRSA.js:267:21)在evalmachine.:16:17在Script.runInContext(vm.js:133:20)在Object.runInContext(vm.js:311:6)在评估时(/run_dir/repl.js:133:14)在ReadStream。 (/run_dir/repl.js:116:5)在ReadStream.emit(events.js:198:13)在addChunk(_stream_visible.js:288:12)在readAddChunk(_stream_visible.js:269:11)

我该如何解决?

谢谢。

回答如下:

您使用错误的密钥解密。

您应该使用私钥。

key.decrypt(buffer, [encoding]);

不是当前的公钥:

key.decryptPublic(buffer, [encoding]); // use public key for decryption

RSA通常作为公共流进行加密,通过私有进行解密。

发布评论

评论列表 (0)

  1. 暂无评论