当前位置:首页 > JavaScript

js实现rsa

2026-02-01 12:50:50JavaScript

RSA 算法简介

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

生成密钥对

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

js实现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'));

解密数据

使用私钥解密数据:

js实现rsa

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

标签: jsrsa
分享给朋友:

相关文章

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…

js实现滑动

js实现滑动

实现滑动效果的方法 在JavaScript中实现滑动效果可以通过多种方式完成,以下是几种常见的实现方法: 使用CSS过渡和JavaScript触发 通过CSS定义过渡效果,JavaScript控制触…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…

js 实现递归

js 实现递归

递归的基本概念 递归是指函数直接或间接调用自身的过程。在JavaScript中,递归通常用于解决可以分解为相似子问题的问题,如阶乘、斐波那契数列、树形结构遍历等。 递归的实现要点 基线条件(Base…