Nodejs实现RSA私钥解密

需求

用 node.js 实现 RSA 私钥解密,已知

  1. 填充方式:PKCS1_PADDING

  2. 输出类型: hex

  3. 字符集: utf8 编码

  4. 私钥:

    -----BEGIN PRIVATE KEY-----
    XXXXXXXXXXXX
    -----END PRIVATE KEY-----
  5. 待解密的文本:YYYYYYYYYYYYYY

请得出解密转换结果

代码

要使用 Node.js 实现 RSA 私钥解密,您可以使用 Node.js 的crypto模块和privateDecrypt方法来完成。以下是使用给定参数进行解密的示例代码:

为了安全性,我们将私钥文本的放到脚本同级目录的key.pem文件中,然后再编写以下脚本。

const crypto = require('crypto');

// 待解密的文本
const encryptedText = 'YYYYYYYYYYYYYY';

// 解密函数
function decryptRSA(encryptedText) {
    try {
        const buffer = Buffer.from(encryptedText, 'hex');

        const decrypted = crypto.privateDecrypt(
            {
                key: fs.readFileSync(path.join(__dirname, '/key.pem'), 'utf8'),
                padding: crypto.constants.RSA_PKCS1_PADDING
            },
            buffer
        );
        return decrypted.toString('utf8');
    } catch (error) {
        console.log('License decrypt error')
        return null
    }

}

// 执行解密
const decryptedText = decryptRSA(encryptedText);
console.log(decryptedText);

上述代码将打印出解密后的文本。请注意,私钥应该是使用正确的格式(Base64 编码)提供给代码,并确保您的 Node.js 版本支持 RSA 私钥解密功能。

参考

评论