当前位置:首页 > 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);

验证签名

使用公钥验证签名:

js实现rsa

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

标签: jsrsa
分享给朋友:

相关文章

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的J…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…

js实现弹框

js实现弹框

使用 alert 实现简单弹框 JavaScript 的 alert 方法可以直接显示一个简单的弹框,内容为纯文本: alert("这是一个简单的弹框"); 使用 confirm 实现确认弹框…