CryptoJS加密解密

news2024/11/24 8:54:47

1.CryptoJS

CryptoJS库是前端js写的一个加密解密的工具,使用场景就是对于像账户密码等重要信息要显示在页面上时,需要加密,这样才能保证安全,CryptoJS提供了许多加密的方法,

请参考:

cryptojs-JavaScript中文网-JavaScript教程资源分享门户

大概理解下就是在多种加密解密的方法中,我们加密和解密时使用的方式要保持一致,

可以再参考一下下面的博客:

CryptoJS-中文文档 - 灰锅 - 博客园

这样我们大概就有了一个了解,下面我们来实现。

2.加密解密

加密方法 CODE 2-1,参数请参考图2-2

const encryption = (value: string, AESKey: string) => {
        let key = CryptoJS.enc.Utf8.parse(AESKey);
        let iv = CryptoJS.enc.Utf8.parse(AESKey.substr(0, 16)); // 偏移量:规定的是key前15位
        let srcs = CryptoJS.enc.Utf8.parse(value);
        let encrypted = CryptoJS.AES.encrypt(srcs, key, {
          iv: iv,
          mode: CryptoJS.mode.ECB,
          padding: CryptoJS.pad.Pkcs7,
        });
        return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
    }


encryption(pwd, md5(username));

                                                                           CODE 2-1

                                                                           图2-2

简单解析:

加密使用了AES,第一个参数是要加密的值,这里就是密码(都要使CryptoJS.enc.Utf8.parse()方法进行格式转化),iv是偏移量,这里拿了MD5加密后的username的去前15位,mod:ECB,padding:pkcs7(这些没什么特殊的,规定好,只要解密的时候用一样的数据就好),返回加密的密码时,encrypted.ciphertext代表了普通文本的加密,一定要用Base64的方法

下面看解密吧:

const decryption = (value: string, AESKey: string) => {
    const key = CryptoJS.enc.Utf8.parse(AESKey);
    let iv = CryptoJS.enc.Utf8.parse(AESKey.substr(0, 16));
    const decrypt = CryptoJS.AES.decrypt(value, key, { iv: iv, mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
    return CryptoJS.enc.Utf8.stringify(decrypt).toString();
  }

如上,只要保持一些配置和加密相同即可

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

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

相关文章

OSPF的汇总实验

目录 1.拓扑图 2.实验要求 3.实验思路 4.主要配置 5.测试 6.实验总结 1.拓扑图 2.实验要求 R4为ISP,其上只能配置ip,R4与其他所有直连设备间使用公有ip;解决ospf不规则区域;整个ospf环境ip地址为172.16.0.0/16,…

pure pursuit纯跟踪

Pure Pursuit是一种几何追踪方法,速度越小,performance越好; :汽车前轮转角 L:前后轮轴距(车长) R:转弯半径 将车辆模型简化为自行车模型(这里默认左轮和右轮的旋转是一致的)!!! bicycle model: pure pursuit建立于自行车模型和阿克曼小车模型的基础上,goal point为距离后…

2022年用于Web开发的15种最佳编程语言

Web 开发是一个常青的领域,机会总是很多。自 90 年代初出现以来,开发行业在各种方式和领域中发展并蓬勃发展。今天,在 21 世纪,Web 开发仍然是最受欢迎的技能之一。要在这个领域开始职业生涯,掌握Web 开发语言是必不可…

UDS-10.4 SecurityAccess (27) service

10.4 安全访问(27)服务 来自:ISO 14229-1-2020.pdf 10.4.1 服务描述 本服务的目的是提供一种访问数据和/或诊断服务的方法,这些数据和/或诊断服务由于安全、排放或安全原因而被限制访问。用于将例程或数据下载/上传到服务器以及从服务器读取特定内存位置…

spring 基础知识-- IOC 和 DI 的配置和使用。

目录 一、基本概念 二、Spring 核心概念 1、问题分析 2、IOC、IOC容器、Bean、DI 3、IOC 入门案例 4、DI 入门案例 三、IOC 详解 1、bean 基础配置 2、bean 实例化 3、bean 生命周期 四、DI 详解 1、setter 注入 2、构造器注入 3、自动配置 4、集合注入 一、基…

go调度和性能分析利器之trace

trace的使用示例 import ("fmt""log""os""runtime/trace""sync" )func main() {//runtime.GOMAXPROCS(1)// 1. 创建trace持久化的文件句柄f, err : os.Create("trace.out")if err ! nil {log.Fatalf("failed…

再次学习make

目录 1.Makefile的重要性 2.MakeFile的概念 3.Makefile的优点 4.Makefile的基本语法 5.变量 5.1 自定义变量 5.2 变量的赋值 5.3自动变量 5.4 Makefile的隐含变量 6.Makefile的函数 6.1意义: 6.2 基本语法: 6.3 部分常用函数 6.4 自定义函…

ECS-弹性容器服务 - Part 1

67-ECS-弹性容器服务 - Part 1 Hello大家好,我们今天的课时内容是ECS-AWS的弹性容器服务。 ECS-AWS的弹性容器服务 ECS是高度可扩展的、快速的容器管理和编排服务。 使用ECS,能够将您的Docker容器运行在AWS EC2或者 Fargate管理的无服务器架构上。 将容…

磨金石教育摄影技能干货分享|什么是序列摄影?它让摄影更加深刻

著名摄影师肖尔曾这样表达过自己的摄影理念。 他说:“吸引我的总是平淡无奇的瞬间”。 他与著名的纪实摄影师布列松不同,他不喜欢去游荡在生活之外,去抓拍他人的精彩瞬间。 他也不喜欢报道式的摄影,不去过多关注社会话题。 而是将…

第二证券|首批浮动费率基金三年成绩出炉 规模虽小收益可观

2019年12月18日至12月26日,6家基金公司试点建立了职业第一批逐笔比例提取成绩酬劳的起浮办理费率基金(下称“起浮费率基金”)。如今,这6只起浮费率基金运作均已满三年,到2022年12月26日,6只产品建立以来均匀…

Selenium Webdriver 实现原理详解

目录 1. Selenium 概述 2. 术语解释: 3. Selenium WebDriver 实现原理 4. 安装selenium 客户端,浏览器,驱动 4.1 安装selenium client lib 4.2 安装浏览器和浏览器驱动 4.3 例子代码 4.4 省略浏览器驱动的方法 4.5 测试代码与Webdr…

MAC控制器驱动

嵌入式Linux开发模式下,以太网硬件架构一般都是 MAC与PHY是独立的。所以以太网模块的硬件相关的驱动代码主要包括 GMAC 和 PHY,其中MAC控制器驱动由SoC厂商开发,PHY芯片驱动由PHY厂商开发,PHY 驱动一般使用通用 PHY 驱动&#xff…

无线烧录器(2)

传送门:连接 继上次完成了ESP32无线烧录器。那么有一个问题就是,一堆人都在一起想用这个来无线烧录呢,那么固件中定死的热点名称岂不是会互相的扰乱。所以需要自己编译属于自己的热点名称。 首先需要准备以下几样东西。 Ubuntu (需…

excel数据透视表:善用这些功能,提高工作效率!下篇

在上篇文章中,我们为大家分享了透视表的前5条妙用,分别是合并同类项、按条件汇总数据、统计非重复数据、排名、批量创建表格,不知道大家都还记得吗?那么今天我们书接上回,继续为大家分享关于透视表的后5条妙用。 六、…

密码学_SM4国密算法

目录 简介 两类参数 加密流程 RKi和Ki4的生成方法 Xi4的生成方法​编辑 左移的概念 简介 在商用密码体系中,SM4主要用于数据加密,其算法公开,分组长度与密钥长度均为128bit,加密算法与密钥扩展算法都采用32轮非线性迭代结构&…

2022年终总结——脚踏实地,勇敢做自己

不知不觉又来到了年尾,即便都要迈入2023年了,但是在写日期的时候还会下意识的写成2021,这可能就是感觉一年额外漫长的原因吧。其实还是不希望过年的,毕竟跨过了新年要长岁了,看着日益增长的年岁还是会有点难过的&#…

JVM- 第一章-JVM与Java体系结构

JVM-第一章-JVM与Java体系结构1.1. 前言1.2开发人员如何看待上层框架1.3架构师每天都在思考什么?1.4我们为什么要学习JVM1.5 Java VS C1.6面向人群及参考书籍1.1. 前言 作为Java工程师的你曾被伤害过吗?你是否也遇到过这些问题? ● 运行着…

尚医通-数据字典添加缓存-配置nginx(十五)

目录: (1)后台系统 数据字典-添加缓存 (2)后台系统配置nginx (1)后台系统 数据字典-添加缓存 Spring Cache Redis 缓存数据 Spring Cache 是一个非常优秀的缓存组件。自Spring 3.1起&#xff…

CSDN第19次竞赛题解与总结

2022/12/28 19:00 CSDN第19次竞赛火热进行。 本场竞赛由「电子工业出版社 & CSDN」联合主办。 《Python机器学习算法与实战》 本书基于Python语言,结合实际的数据集,介绍如何使用机器学习与深度学习算法,对数据进行实战分析,在…

MySQL 启动日志报错:Starting MySQL. ERROR! The server quit without updating PID file

一 问题描述 1.1 问题描述 1.首先通过切换到mysql数据库所属用户: hd-mysql [rootlocalhost local]# su hd-mysql 2.启动mysql,报错 [hd-mysqllocalhost data]$ service mysql start Starting MySQL. ERROR! The server quit without updating PID…