当前位置:首页 > JavaScript

js实现rsa

2026-02-01 12:50:50JavaScript

RSA 算法简介

RSA 是一种非对称加密算法,广泛应用于数据加密和数字签名。它基于大数分解的数学难题,使用公钥加密、私钥解密。

生成密钥对

在 JavaScript 中可以使用 crypto 模块生成 RSA 密钥对:

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

generateKeyPair('rsa', {
  modulusLength: 2048,
  publicKeyEncoding: {
    type: 'spki',
    format: 'pem'
  },
  privateKeyEncoding: {
    type: 'pkcs8',
    format: 'pem'
  }
}, (err, publicKey, privateKey) => {
  if (err) throw err;
  console.log('Public Key:', publicKey);
  console.log('Private Key:', privateKey);
});

加密数据

使用公钥加密数据:

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

const encryptedData = publicEncrypt(
  publicKey,
  Buffer.from('要加密的数据')
);
console.log('加密结果:', encryptedData.toString('base64'));

解密数据

使用私钥解密数据:

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

const decryptedData = privateDecrypt(
  privateKey,
  encryptedData
);
console.log('解密结果:', decryptedData.toString());

数字签名

使用私钥创建签名:

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

const sign = createSign('SHA256');
sign.update('要签名的数据');
const signature = sign.sign(privateKey, 'base64');
console.log('签名:', signature);

验证签名

使用公钥验证签名:

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

const verify = createVerify('SHA256');
verify.update('要验证的数据');
const isValid = verify.verify(publicKey, signature, 'base64');
console.log('验证结果:', isValid);

注意事项

  1. 密钥长度建议至少 2048 位以保证安全性
  2. 确保私钥的安全存储,避免泄露
  3. 大文件加密建议使用对称加密,RSA 仅用于加密密钥
  4. 浏览器环境可能需要使用 WebCrypto API 或其他库如 jsencrypt

js实现rsa

标签: jsrsa
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterv…

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swip…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的H…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…