📜  Node.js crypto.publicDecrypt() 方法(1)

📅  最后修改于: 2023-12-03 14:44:38.175000             🧑  作者: Mango

Node.js crypto.publicDecrypt() 方法

简介

crypto.publicDecrypt() 是 Node.js 中 crypto 模块提供的一个方法,用于使用公钥加密算法对数据进行解密。它是对称方法 crypto.privateEncrypt() 的逆操作。

该方法可用于解密使用 crypto.privateEncrypt() 方法加密的数据,因此通常在需要进行加密和解密的情况下使用。

语法
crypto.publicDecrypt(publicKey, buffer)
参数
  • publicKeyBuffer 类型的公钥。
  • bufferBuffer 类型的被加密数据。
返回值

返回一个 Buffer 类型的解密后的数据。

示例
const crypto = require('crypto');

// 使用指定的公钥对数据进行加密
const publicKey = `-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJK01R7IQxt9Q7gMQxAMf2U5Ka/nM5a0
EBvIdBN7Yz+dZCkzd+UD1MznVMEiTHgWWXAnL05iV/VWD74MZ9JuzNUCAwEAAQ==
-----END PUBLIC KEY-----`;

const data = Buffer.from('Hello, World!');

const encryptedData = crypto.publicEncrypt(publicKey, data);

// 使用私钥对加密后的数据进行解密
const decryptedData = crypto.publicDecrypt(publicKey, encryptedData);

console.log(decryptedData.toString());  // 输出:Hello, World!
注意事项
  • 公钥和私钥是成对的,使用不匹配的公钥进行解密将会导致解密失败。
  • 建议使用 OpenSSH 格式的 RSA 密钥对。
  • 如果加密数据比公钥的长度大,解密可能会失败。一种解决办法是将数据分块加密,然后依次解密块数据。
参考资料