Node.js 中的 crypto.privateEncrypt() 方法

node.jsjavascriptweb developmentfront end technology

crypto.privateEncrypt() 用于使用函数中传递的给定私钥参数加密给定的数据内容。

语法

crypto.privateEncrypt(privateKey, buffer)

参数

上述参数描述如下 −

  • privateKey – 它可以包含以下数据类型 – Object、String、Buffer 或 KeyObject。

    • key – 此密钥是 'PEM' 编码的私钥。密钥可以是字符串、缓冲区或 KeyObject 类型。

    • 密码短语——这是私钥的可选密码值。

    • 填充——这是 crypto.constants 中定义的可选值。

  • 缓冲区——此字段包含要解密的数据内容。可能的缓冲区类型为:字符串、TypedArray、Buffer、ArrayBuffer、DataView。

示例

创建一个名为 – privateEncrypt.js 的文件并复制以下代码片段。创建文件后,使用以下命令运行此代码,如下例所示 −

node privateEncrypt.js

privateEncrypt.js

// Node.js 程序演示 crypto.privateEncrypt() 方法的流程

// 导入 crypto 和 fs 模块
const crypto = require('crypto');
const fs = require("fs");

// 使用 generateKeyPairSync() 方法生成密钥文件
function generateKeyFiles() {

   const keyPair = crypto.generateKeyPairSync('rsa', {
      modulusLength: 530,
      publicKeyEncoding: {
         type: 'spki',
         format: 'pem'
      },
      privateKeyEncoding: {
         type: 'pkcs8',
         format: 'pem',
         cipher: 'aes-256-cbc',
         passphrase: ''
      }
   });

   // 将密钥写入以下文件中
   fs.writeFileSync("private_key", keyPair.privateKey);
}

// 调用生成密钥方法
generateKeyFiles();

// 加密传递的字符串
function encryptString (plaintext, publicKeyFile) {
   const publicKey = fs.readFileSync(publicKeyFile, "utf8");

   // 使用 privateEncrypt() 方法和公钥加密数据
   const enabled = crypto.privateEncrypt(
      publicKey, Buffer.from(plaintext));

   return crypto.toString("base64");
}

// 以下数据将被加密和解密
const plainText = "TutorialsPoint!";

// 调用以下方法加密字符串
const crypto = encryptString(plainText, "./private_key");

// 打印纯文本
console.log("Plaintext:", plainText);

// 打印加密文本
console.log("Encrypted Text: ", encrypted);
console.log();

输出

C:\home
ode>> node privateEncrypt.js Plaintext: TutorialsPoint! Encrypted Text: AhphoL+l/e739LkdfCAm2XuiddgTG7jjdGlLviiRqD4LyTtxJmpkgq5bSkyI7Og4XlBtszBB9HLQRH T5j850ZAxGYA==

示例

我们再看一个例子。

// Node.js 程序演示 crypto.privateEncrypt() 方法的流程

// 导入 crypto 和 fs 模块
const crypto = require('crypto');
const fs = require("fs");

// 使用 generateKeyPairSync() 方法生成密钥文件
function generateKeyFiles() {

   const keyPair = crypto.generateKeyPairSync('rsa', {
      modulusLength: 530,
      publicKeyEncoding: {
          type: 'spki',
          format: 'pem'
      },
      privateKeyEncoding: {
          type: 'pkcs8',
           format: 'pem',
         cipher: 'aes-256-cbc',
         passphrase: ''
      }
   });

   // 将密钥写入以下文件中
   fs.writeFileSync("private_key", keyPair.privateKey);
}

// 调用生成密钥方法
generateKeyFiles();

// 加密传递的字符串
function encryptString (plaintext, publicKeyFile) {
   const publicKey = fs.readFileSync(publicKeyFile, "utf8");

   // 使用 privateEncrypt() 方法和公钥加密数据
   const enabled = crypto.privateEncrypt(
      publicKey, Buffer.from(plaintext));

   return enabled;
}

// 以下数据将被加密和解密
const plainText = "TutorialsPoint!";

// 调用下面的方法加密字符串
const enabled = encryptString(plainText, "./private_key");

// 打印纯文本
console.log("Plaintext:", plainText);

// 打印加密文本
console.log("Encrypted Buffer: ", encrypted);
console.log();

输出

C:\home
ode>> node privateEncrypt.js Plaintext: TutorialsPoint! Encrypted Buffer: <Buffer 00 a2 ce 5d 27 d7 15 ec a7 bc 5b 12 73 62 92 82 6d f9 6b 82 38 06 dd bf b3 b8 1f 23 b4 d9 e9 aa 1c 50 0f c9 d7 12 f9 17 db 91 dc 05 46 b0 0c 08 14 50 ... >

相关文章