首页 > 解决方案 > 如何使用公钥加密并使用 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 是一种选择吗?

帮助 !!!:(

标签: javascriptpythonnode.jsencryption

解决方案


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


推荐阅读