javascript - 如何使用公钥加密并使用 Javascript(NodeJS 等)使用 Base64 进行编码
问题描述
var NodeRSA = require('node-rsa');
var key = new NodeRSA();
var public= '-----BEGIN PUBLIC KEY-----'+publicKey+'-----END PUBLIC KEY-----';
const text = "hello";
key.importKey(public,"pkcs1");
var encrypted = key.encrypt(text, 'base64');
console.log(encrypted);
我正在尝试使用 node-rsa 加密文本,并且我尝试加密的文档说它必须使用 RSA 中的加密和 PKCS1-v1_5 方案进行加密。我尝试使用这段代码并且它可以工作,但是当我将加密消息发送到 API 时(我无法透露哪个),它不接受它并显示此错误消息:
{"errors":[{"code":"rsaCryptService.decrypt.wrongKey","title":"Wrong public key.","detail":"The public key you are using is invalid. Please use the one we provided you."}]}
我在 Python 中制作了一个替代版本并且可以使用,但我需要它使用 Javascript 来工作
使用 Django 或 Flask 是一种选择吗?
帮助 !!!:(
解决方案
let forge = require("node-forge");
var pki = forge.pki;
var pem = '-----BEGIN PUBLIC KEY-----\n'+key+'-----END PUBLIC KEY-----';
// convert a PEM-formatted public key to a Forge public key
var publicKey = pki.publicKeyFromPem(pem);
var text = "message";
const encrypted = publicKey.encrypt(text);
console.log("encrypted:", forge.util.encode64(encrypted));
已经找到解决我的问题的方法。希望能帮助别人!:D
推荐阅读
- c++ - if(!root){ 返回什么?} 在 C++ 中的意思
- deep-learning - yolo中net.getUnconnectedOutLayers()的作用是什么
- php - 使用 PhpSpreadsheet 隐藏列
- javascript - 有条件地在选项卡中渲染组件
- java - JavaFX 控制器类问题 [已解决]
- python - 使用气流 restapi 触发 dag 不起作用,但单击 UI 可以
- loops - Spark 在每个循环的同一 Spark 会话中释放资源
- cmd - CMD - 枢轴/转置文件行[例如转换 1500 行 (x1 col) --> 500 行 (x3 col)]
- r - 无法从这些向量中制作数据框,然后在 R 中绘制条形图
- android - 我下载的颤振项目显示在 grdle 文件中找不到颤振 SDK