21xrx.com
2024-12-22 22:21:54 Sunday
登录
文章检索 我的文章 写文章
Node.js Crypto RSA加密教程
2023-06-24 03:48:38 深夜i     --     --
Node js Crypto RSA加密 教程 加密算法

Node.js是一款基于Chrome V8引擎的事件驱动I/O服务器端JavaScript运行环境。同时,它也能够作为客户端进行JavaScript编程。

在Node.js中实现RSA加密,需要用到crypto模块。

首先需要生成一对RSA密钥:


const crypto = require('crypto');

const { generateKeyPairSync } = require('crypto');

const privateKey = generateKeyPairSync('rsa', {

 modulusLength: 4096,

 publicKeyEncoding:

  type: 'spki',

 privateKeyEncoding:

  format: 'pem'

 

});

console.log('Public Key:\n', publicKey);

console.log('Private Key:\n', privateKey);

上面的代码中,generateKeyPairSync() 方法用于生成一对RSA密钥,其中指定了密钥的长度是 4096,同时也指定了公钥和私钥的格式。

接下来,我们可以使用公钥加密一段信息:


const crypto = require('crypto');

const publicKey = require('./rsa_keypair');

const plaintext = 'Hello, world!';

const encryptedData = crypto.publicEncrypt(

  padding: crypto.constants.RSA_PKCS1_OAEP_PADDING, Buffer.from(plaintext));

console.log('Encrypted Data:\n', encryptedData.toString('base64'));

上述代码中,我们使用crypto.publicEncrypt() 方法进行加密,其中传入了公钥以及明文信息。

使用私钥解密:


const crypto = require('crypto');

const publicKey = require('./rsa_keypair');

const ciphertext = 'h3qNyzvF9TswKmqJg5Bxx6WWGYqD25Rno9jK1Jz7QCuaRnONd2UJhD7ZMBbL5vn1Jauje7/WDCY6M0JhX8FPZVhQDI8upYsWFz/VGRfT8WyC+TdcYJft4fpO0jx53TYO8OGPz4azWNX3/s5EOCu31lJpYs6EDVJw4lWUQ2wc8vWzqkWZtFQmJnRMjmeaXTDRR8dQEG/8dUap1YpPbnh5Dh+nDqa6m+JbFfZbmlH6Wp7xTHzVXO0DxHB9Me7pwvX6EpUxhbu1cdBnd7oD2mU9rSrLQZH83/eJ7SOjgpR6BpFXvZtbzha0CMDgDaM2daP56Jo3mCqgz1wlOyptx/iQ==';

const buffer = Buffer.from(ciphertext, 'base64');

const decryptedData = crypto.privateDecrypt(

  oaepHash: "sha256", buffer);

console.log('Decrypted Data:\n', decryptedData.toString());

上述代码中,我们将加密后的密文进行解密,使用crypto.privateDecrypt() 方法进行解密,其中传入了私钥以及要解密的信息。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复