前端开发之jsencrypt加密解密的使用方法和使用示例

目录

RSA密钥生成选项简介

[jsencrypt 使用教程](#jsencrypt 使用教程)

[一、安装 jsencrypt](#一、安装 jsencrypt)

[二、使用 jsencrypt 进行加密和解密](#二、使用 jsencrypt 进行加密和解密)

[1. 创建密钥对](#1. 创建密钥对)

[2. 加密数据](#2. 加密数据)

[3. 解密数据](#3. 解密数据)

三、实际应用示例

[加密数据并存储到 localStorage 中:](#加密数据并存储到 localStorage 中:)

[从 localStorage 中读取加密数据并解密:](#从 localStorage 中读取加密数据并解密:)

四、使用示例:加密和解密函数

五、注意事项

[jsencrypt vs bcryptjs](#jsencrypt vs bcryptjs)


// 密钥对生成 密钥对生成

RSA密钥生成选项简介

1. 密钥位数

  • 512位: 最弱,仅用于测试
  • 1024位: 较弱,不推荐
  • 2048位 ✅: 推荐使用,安全性和性能均衡
  • 3072位: 更安全,但更慢
  • 4096位: 最安全,性能最差

2. 密钥格式

  • PKCS#1 ✅: 适合JSEncrypt使用,兼容性好
  • PKCS#8: 更现代的格式 支持更多算法

3. 输出格式

  • PEM/Base64 ✅: 最常用 可直接复制使用
  • Hex: 十六进制格式 特殊场景使用

4. 证书密码

  • 可以为空 ✅
  • 设置密码会增加安全性,但使用时需要额外步骤

    密钥位数:2048位
    密钥格式:PKCS#1
    输出格式:PEM/Base64
    证书密码:空(测试环境)

jsencrypt 使用教程

jsencrypt 是一个用于 JavaScript 中的数据加密解密库,允许在前端进行加密和解密操作,确保敏感信息在浏览器端的安全处理。下面是关于如何使用 jsencrypt 的详细介绍。


一、安装 jsencrypt

首先,您可以使用 npm 安装 jsencrypt

复制代码
npm install jsencrypt

二、使用 jsencrypt 进行加密和解密

1. 创建密钥对

jsencrypt 中,您需要先创建一对公钥和私钥。公钥用于加密数据,私钥用于解密数据。您可以使用以下代码来设置公钥和私钥:

复制代码
const JSEncrypt = require('jsencrypt');
const key = new JSEncrypt();

// 设置公钥
key.setPublicKey('-----BEGIN PUBLIC KEY-----\n...your public key...\n-----END PUBLIC KEY-----');

// 设置私钥
key.setPrivateKey('-----BEGIN RSA PRIVATE KEY-----\n...your private key...\n-----END RSA PRIVATE KEY-----');
2. 加密数据
复制代码
const encrypted = key.encrypt('hello world');
console.log(encrypted); // 输出加密后的数据
3. 解密数据

使用私钥对加密后的数据进行解密,示例如下:

复制代码
const decrypted = key.decrypt(encrypted);
console.log(decrypted); // 输出解密后的数据,应该与原始数据相同

三、实际应用示例

假设您需要将敏感数据加密后存储在 localStorage 中,并在需要时进行解密,以下是完整的实现代码:

加密数据并存储到 localStorage 中:
复制代码
const JSEncrypt = require('jsencrypt');
const key = new JSEncrypt();

// 设置公钥和私钥
key.setPublicKey('-----BEGIN PUBLIC KEY-----\n...your public key...\n-----END PUBLIC KEY-----');
key.setPrivateKey('-----BEGIN RSA PRIVATE KEY-----\n...your private key...\n-----END RSA PRIVATE KEY-----');

const data = '敏感数据'; // 需要加密的数据
const encryptedData = key.encrypt(data);

// 将加密后的数据存储到 localStorage 中
localStorage.setItem('encryptedData', encryptedData);
localStorage 中读取加密数据并解密:
复制代码
const encryptedData = localStorage.getItem('encryptedData'); // 从 localStorage 获取加密后的数据
const decryptedData = key.decrypt(encryptedData); // 解密数据并获取原始数据
console.log(decryptedData); // 输出解密后的数据,应该与原始数据相同

四、使用示例:加密和解密函数

您还可以将加密和解密的逻辑封装成函数,简化后续调用:

复制代码
import JSEncrypt from "jsencrypt/bin/jsencrypt.min";

// 密钥对生成工具(如 http://web.chacuo.net/netrsakeypair)

const publicKey = `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgXG04cRq/BGjI3abUyu9
... (省略部分公钥) ...
-----END PUBLIC KEY-----`;

const privateKey = `-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAgXG04cRq/BGjI3abUyu9jZKjhC4VOTrlqbNwF/jYiBvKWpc3
... (省略部分私钥) ...
-----END RSA PRIVATE KEY-----`;

// 加密
export function encrypt(txt) {
  const encryptor = new JSEncrypt();
  encryptor.setPublicKey(publicKey); // 设置公钥
  return encryptor.encrypt(txt); // 对数据进行加密
}

// 解密
export function decrypt(txt) {
  const encryptor = new JSEncrypt();
  encryptor.setPrivateKey(privateKey); // 设置私钥
  return encryptor.decrypt(txt); // 对数据进行解密
}

五、注意事项

  1. 密钥安全性:确保私钥和公钥的安全性,尤其是私钥必须保密,避免泄露。
  2. 加密算法 :选择适合您的应用场景的加密算法和密钥长度,RSA 是常见的非对称加密算法,适用于许多加密需求。
  3. 浏览器兼容性jsencrypt 使用 JavaScript 来进行加解密操作,确保您的应用在目标浏览器中兼容。

通过 jsencrypt,您可以轻松在前端实现数据的加密和解密,提升数据安全性,避免敏感信息被非法窃取。

jsencrypt vs bcryptjs

  • jsencrypt
    • jsencrypt 是一个用于 非对称加密 的库,通常使用公钥加密数据,私钥解密。
    • 适用于加密数据在传输过程中保持机密性,比如在前端加密后传输到后端。
    • 典型用途:加密敏感信息如 API 密钥、用户密码等。
  • bcryptjs
    • bcryptjs 是一个用于 密码哈希 的库,通常用于 对称哈希(不可逆加密)。它不支持解密操作。
    • 主要用于将密码或其他敏感数据转化为哈希值,用于存储在数据库中进行验证。
    • 典型用途:存储用户密码、验证密码是否正确。

相关推荐
阿懂在掘金1 天前
做命令式弹窗工具应该考虑什么——我为什么把 vue-layerx 设计成这样
前端·前端框架·函数式编程
LaughingZhu1 天前
Product Hunt 每日热榜 | 2026-07-23
前端·神经网络·react.js·搜索引擎·前端框架
GuWenyue1 天前
放弃云端API!一套React+WebGPU本地LLM方案,零数据上传、离线可用
前端·人工智能·前端框架
Bad_Shepherd2 天前
vue-element-plus-admin添加自定义svg图标,并且图标选择组件可选自定义图标
vue.js·elementui·前端框架
hoLzwEge3 天前
解码 IDE 智能提示:jsconfig.json 辅助开发全攻略
前端·前端框架
gis开发之家3 天前
《Vue3 从入门到大神35篇》Vue3 源码详解(五):effect 依赖收集原理——track 与 trigger 是如何工作的?
javascript·typescript·前端框架·vue3·vue3源码
橘子星3 天前
我一个前端切图仔,凭什么能在浏览器里跑大模型?
前端·javascript·前端框架
腻害兔3 天前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:ERP 企业资源模块,一个轻量级进销存的完整实现?
前端·javascript·vue.js·人工智能·前端框架·产品经理·ai编程
小林ixn4 天前
从 onclick 到 React 合成事件,再到完整应用逻辑:一次前端架构的深度剖析
前端·react.js·前端框架
hoLzwEge4 天前
前端环境变量配置指南:.env 文件详解
前端·前端框架