首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在nodejs中使用RSA/ECB/PKCS1 1正确加密数据

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

Stack Overflow用户
提问于 2019-10-05 03:52:29
回答 2查看 1.8K关注 0票数 0

Im使用节点-rsa包加密数据,如下所示

代码语言:javascript
复制
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')

但现在,当我试图解密结果时,如下所示:

代码语言:javascript
复制
key.decryptPublic(result, 'utf-8')

我收到以下错误消息:

错误:解密期间的错误(可能是不正确的密钥)。原版错误: error: Error: 0407008A:在NodeRSA.module.exports.NodeRSA上的rsa routines:RSA_padding_check_PKCS1_type_1:invalid填充。$decryptKey (/home/runner/node_modules/node-rsa/src/NodeRSA.js:301:19) at NodeRSA.module.exports.NodeRSA.decryptPublic (/home/runner/node_modules/node-rsa/src/NodeRSA.js:267:21) at Script.runInContext。vm.js:133:20) at Object.runInContext (vm.js:311:6) at ReadStream (/run_dir/vm.js:311:6:133:14)。(/run_dir/pl.js:116:5) ReadStream.emit (events.js:198:13) at addChunk (_stream_readable.js:288:12) at readableAddChunk (_stream_readable.js:269:11)

我怎么才能解决这个问题?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2019-10-05 07:11:50

你用错钥匙解密了。

你应该用私钥。

代码语言:javascript
复制
key.decrypt(buffer, [encoding]);

而不是您当前的公钥:

代码语言:javascript
复制
key.decryptPublic(buffer, [encoding]); // use public key for decryption

RSA通常以公钥加密,用私有解密。

票数 0
EN

Stack Overflow用户

发布于 2021-04-06 15:13:07

设encryptedText = encrypted.toString("base64");

让readPrivateKey =fs.readFileSync(“./key.txt”,"utf-8");让解密= privateDecrypt(readPrivateKey,decryptBuffer);

这就解决了加密和解密的编码方案应该是相同的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58245203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档