更新私钥生成中的一些参数将使此工作正常:
var crypto = require("crypto");
var path = require("path");
var fs = require("fs");
const passphrase = "mySecret"
var encryptStringWithRsaPublicKey = function(toEncrypt, relativeOrAbsolutePathToPublicKey) {
var absolutePath = path.resolve(relativeOrAbsolutePathToPublicKey);
var publicKey = fs.readFileSync(absolutePath, "utf8");
var buffer = Buffer.from(toEncrypt);
var encrypted = crypto.publicEncrypt(publicKey, buffer);
return encrypted.toString("base64");
};
var decryptStringWithRsaPrivateKey = function(toDecrypt, relativeOrAbsolutePathtoPrivateKey) {
var absolutePath = path.resolve(relativeOrAbsolutePathtoPrivateKey);
var privateKey = fs.readFileSync(absolutePath, "utf8");
var buffer = Buffer.from(toDecrypt, "base64");
const decrypted = crypto.privateDecrypt(
{
key: privateKey.toString(),
passphrase: passphrase,
},
buffer,
)
return decrypted.toString("utf8");
};
const { writeFileSync } = require('fs')
const { generateKeyPairSync } = require('crypto')
function generateKeys() {
const { publicKey, privateKey } = generateKeyPairSync('rsa',
{
modulusLength: 4096,
namedCurve: 'secp256k1',
publicKeyEncoding: {
type: 'spki',
format: 'pem'
},
privateKeyEncoding: {
type: 'pkcs8',
format: 'pem',
cipher: 'aes-256-cbc',
passphrase: passphrase
}
});
writeFileSync('private.pem', privateKey)
writeFileSync('public.pem', publicKey)
}
generateKeys();
let a = encryptStringWithRsaPublicKey("hello", "public.pem")
let b = decryptStringWithRsaPrivateKey(a, "private.pem");
console.log(b)