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

在Node.js的公钥对数据进行加密

IT培训 admin 7浏览 0评论

在Node.js的公钥对数据进行加密

我需要加密使用公钥(PEM文件)的字符串,然后使用私有密钥(也PEM)签字。

我加载了PEM文件罚款:

publicCert = fs.readFileSync(publicCertFile).toString();

但谷歌的冲刷小时后,我似乎无法找到一种方法,使用公钥对数据进行加密。在PHP中我只需拨打openssl_public_encrypt,但我没有看到节点或在任何模块的任何相应的功能。

如果任何人有任何建议,让我知道。

回答如下:

没有必要库的朋友,

输入crypto

这里是你可以用它来与RSA密钥加密/解密字符串一个janky的小模块:

var crypto = require("crypto");
var path = require("path");
var fs = require("fs");

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");
    var decrypted = crypto.privateDecrypt(privateKey, buffer);
    return decrypted.toString("utf8");
};

module.exports = {
    encryptStringWithRsaPublicKey: encryptStringWithRsaPublicKey,
    decryptStringWithRsaPrivateKey: decryptStringWithRsaPrivateKey
}

我建议在可能情况下使用同步fs的方法,你可以使用的承诺,使这更好​​的,但对于简单的用例,这是我所看到的工作,并会采取的方法

在Node.js的公钥对数据进行加密

我需要加密使用公钥(PEM文件)的字符串,然后使用私有密钥(也PEM)签字。

我加载了PEM文件罚款:

publicCert = fs.readFileSync(publicCertFile).toString();

但谷歌的冲刷小时后,我似乎无法找到一种方法,使用公钥对数据进行加密。在PHP中我只需拨打openssl_public_encrypt,但我没有看到节点或在任何模块的任何相应的功能。

如果任何人有任何建议,让我知道。

回答如下:

没有必要库的朋友,

输入crypto

这里是你可以用它来与RSA密钥加密/解密字符串一个janky的小模块:

var crypto = require("crypto");
var path = require("path");
var fs = require("fs");

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");
    var decrypted = crypto.privateDecrypt(privateKey, buffer);
    return decrypted.toString("utf8");
};

module.exports = {
    encryptStringWithRsaPublicKey: encryptStringWithRsaPublicKey,
    decryptStringWithRsaPrivateKey: decryptStringWithRsaPrivateKey
}

我建议在可能情况下使用同步fs的方法,你可以使用的承诺,使这更好​​的,但对于简单的用例,这是我所看到的工作,并会采取的方法

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论