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

news2025/2/1 8:20:59

目录

RSA密钥生成选项简介

jsencrypt 使用教程

一、安装 jsencrypt

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

1. 创建密钥对

2. 加密数据

3. 解密数据

三、实际应用示例

加密数据并存储到 localStorage 中:

从 localStorage 中读取加密数据并解密:

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

五、注意事项

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 是一个用于 密码哈希 的库,通常用于 对称哈希(不可逆加密)。它不支持解密操作。
    • 主要用于将密码或其他敏感数据转化为哈希值,用于存储在数据库中进行验证。
    • 典型用途:存储用户密码、验证密码是否正确。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2289230.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

98.1 AI量化开发:长文本AI金融智能体(Qwen-Long)对金融研报大批量处理与智能分析的实战应用

目录 0. 承前1. 简介1.1 通义千问(Qwen-Long)的长文本处理能力 2. 基础功能实现2.1 文件上传2.2 单文件分析2.3 多文件分析 3. 汇总代码&运行3.1 封装的工具函数3.2 主要功能特点3.3 使用示例3.4 首次运行3.5 运行结果展示 4. 注意事项4.1 文件要求4.2 错误处理机制4.3 最佳…

PPT演示设置:插入音频同步切换播放时长计算

PPT中插入音频&同步切换&放时长计算 一、 插入音频及音频设置二、设置页面切换和音频同步三、播放时长计算 一、 插入音频及音频设置 1.插入音频:点击菜单栏插入-音频-选择PC上的音频(已存在的音频)或者录制音频(现场录制…

链表的简单介绍

申明: 我们的链表可以写在类中或者接口中(接口中更好),这里我们是写在类当中。 1.节点的构造是由当前数据和指向下一个结点的地址组成,那么我们在当前这个链表的类中需要实现一个节点那么此时就需要用到内部类(当一个…

基于聚类与相关性分析对马来西亚房价数据进行分析

碎碎念:由于最近太忙了,更新的比较慢,提前祝大家新春快乐,万事如意!本数据集的下载地址,读者可以自行下载。 1.项目背景 本项目旨在对马来西亚房地产市场进行初步的数据分析,探索各州的房产市…

ARM嵌入式学习--第十一天(中断处理 , ADC)

--中断的概念 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回被暂停的程序继续运行 --CPU处理事情的方式 -轮询方式 不断查询是否有事情需要处理&#xff0c…

消息队列篇--通信协议篇--网络通信模型(OSI7层参考模型,TCP/IP分层模型)

一、OSI参考模型(Open Systems Interconnection Model) OSI参考模型是一个用于描述和标准化网络通信功能的七层框架。它由国际标准化组织(ISO)提出,旨在为不同的网络设备和协议提供一个通用的语言和结构,以…

“新月之智”智能战术头盔系统(CITHS)

新月人物传记:人物传记之新月篇-CSDN博客 相关文章链接(更新): 星际战争模拟系统:新月的编程之道-CSDN博客 新月智能护甲系统CMIA--未来战场的守护者-CSDN博客 目录 一、引言 二、智能头盔控制系统概述 三、系统架…

实验七 JSP内置对象II

实验七 JSP内置对象II 目的: 1、掌握JSP内置对象的使用。 2、理解JSP的作用域 3、掌握session,application对象的使用 实验要求: 1、完成实验题目 2、要求提交实验报告,将代码和实验结果页面截图放入报告中 实验过程&#xff1a…

OpenCV:Harris、Shi-Tomasi角点检测

简述 在计算机视觉和图像处理领域,角点是一种重要的特征点,通常是图像中梯度变化剧烈的区域,例如建筑物的拐角、棋盘的交点等。角点检测广泛应用于目标跟踪、运动检测、拼接全景图 等任务。 本文将介绍 Harris 角点检测 和 Shi-Tomasi 角点…

零代码搭建个人博客—Zblog结合内网穿透发布公网

目录 一、准备工作二、Z-blog 网站搭建1. XAMPP 环境设置2. Z-blog 安装3. Z-blog 网页测试 三、内网穿透工具 Cpolar 的安装和配置1. Cpolar 安装2. Cpolar 云端设置3. Cpolar 本地设置 四、本地网页发布五、注意六、本次经历总结 大家好,我是学问小小谢。 最近心血…

宏_wps_宏修改word中所有excel表格的格式_设置字体对齐格式_删除空行等

需求: 将word中所有excel表格的格式进行统一化,修改其中的数字类型为“宋体, 五号,右对齐, 不加粗,不倾斜”,其中的中文为“宋体, 五号, 不加粗,不倾斜” 数…

xss靶场

xss-labs下载地址&#xff1a;GitHub - do0dl3/xss-labs: xss 跨站漏洞平台 xss常见触发标签&#xff1a;XSS跨站脚本攻击实例与防御策略-CSDN博客 level-1 首先查看网页的源代码发现get传参的name的值test插入了html里头&#xff0c;还回显了payload的长度。 <!DOCTYPE …

线段树(Segment Tree)和树状数组

线段树&#xff08;Segment Tree&#xff09;和树状数组 线段树的实现链式&#xff1a;数组实现 解题思路树状数组 线段树是 二叉树结构 的衍生&#xff0c;用于高效解决区间查询和动态修改的问题&#xff0c;其中区间查询的时间复杂度为 O(logN)&#xff0c;动态修改单个元素的…

MySQL注入中load_file()函数的使用

前言 在Msql注入中&#xff0c;load_file()函数在获得webshell以及提权过程中起着十分重要的作用&#xff0c;常被用来读取各种配置文件 而load_file函数只有在满足两个条件的情况下才可以使用&#xff1a; 文件权限&#xff1a;chmod ax pathtofile 文件大小&#xff1a;必须…

DeepSeek-R1 论文解读 —— 强化学习大语言模型新时代来临?

近年来&#xff0c;人工智能&#xff08;AI&#xff09;领域发展迅猛&#xff0c;大语言模型&#xff08;LLMs&#xff09;为通用人工智能&#xff08;AGI&#xff09;的发展开辟了道路。OpenAI 的 o1 模型表现非凡&#xff0c;它引入的创新性推理时缩放技术显著提升了推理能力…

使用Pygame制作“贪吃蛇”游戏

贪吃蛇 是一款经典的休闲小游戏&#xff1a;玩家通过操控一条会不断变长的“蛇”在屏幕中移动&#xff0c;去吃随机出现的食物&#xff0c;同时要避免撞到墙壁或自己身体的其他部分。由于其逻辑相对简单&#xff0c;但可玩性和扩展性都不错&#xff0c;非常适合作为新手练习游戏…

海外问卷调查如何影响企业的经营?在品牌建设中有何指导意义?

市场调查的定义&#xff1a;通过科学的方法&#xff0c;有目的地、系统地搜集整理一些市场信息&#xff0c;其目的在于了解当下市场现状和发展前景&#xff0c;为企业生产和品牌打造提供一些科学的指导意见&#xff0c;这是任何大企业、中小企业、初创企业都必须重视的一个重要…

unity学习23:场景scene相关,场景信息,场景跳转

目录 1 默认场景和Assets里的场景 1.1 scene的作用 1.2 scene作为project的入口 1.3 默认场景 2 场景scene相关 2.1 创建scene 2.2 切换场景 2.3 build中的场景&#xff0c;在构建中包含的场景 &#xff08;否则会认为是失效的Scene&#xff09; 2.4 Scenes in Bui…

CPU 100% 出现系统中断 怎么解决

CPU 100% 出现系统中断 怎么解决 电脑开机时会掉帧&#xff0c;切换到桌面时就会卡顿&#xff0c;然后打开任务管理器就会看到系统中断的cpu占用率达到100%&#xff0c;过一段时间再打开还是会有显示100%的占用率&#xff0c;这个问题怎么解决&#xff1f; 文章目录 CPU 100% …

数据分析系列--⑥RapidMiner构建决策树(泰坦尼克号案例含数据)

一、资源下载 二、数据处理 1.导入数据 2.数据预处理 三、构建模型 1.构建决策树 2.划分训练集和测试集 3.应用模型 4.结果分析 一、资源下载 点击下载数据集 二、数据处理 1.导入数据 2.数据预处理 三、构建模型 1.构建决策树 虽然决策树已经构建,但对于大多数初学者或…