crypto-js中AES的加解密封装

news2024/11/25 2:43:09

在项目中安装依赖:

npm i crypto-js

在使用的页面引入:

import CryptoJS from 'crypto-js'

crypto-js中AES的加解密简单的封装了一下:

    //加密
    const KEY = '000102030405060708090a0b0c0d0e0f' // 秘钥  这两个需要和后端统一
    const IV = '8a8c8fd8fe33743d3638737ea4a00698' // 偏移量  这两个需要和后端统一
    const encrypt = (word, keyStr, ivStr) => {
        // 如果后端想要的是json串的话
        // JSON.stringify(word) // 当然也可以都json一下 不看是否原本是对象
        // 大多数 我们还是使用的 JSON
        word = typeof word === 'object' ? JSON.stringify(word) : word;

        keyStr = keyStr ?? KEY; //判断是否存在ksy,不存在就用定义好的key
        ivStr = ivStr ?? IV;

        // 字符串类型的key用之前需要用uft8先parse一下才能用
        const key = CryptoJS.enc.Utf8.parse(keyStr);
        const iv = CryptoJS.enc.Utf8.parse(ivStr);

        const srcs = CryptoJS.enc.Utf8.parse(word);
        const encrypted = CryptoJS.AES.encrypt(srcs, key,
            {
                iv,
                mode: CryptoJS.mode.CBC,
                padding: CryptoJS.pad.Pkcs7
            });
        return encrypted.toString();
    }
    console.log(encrypt({ a: "zjq" }), '六卿1 加密')
    console.log(encrypt('zjq'), '六卿2 加密')
    
    // 解密
    const decrypt = (info, keyStr, ivStr) => {
        keyStr = keyStr ??  KEY; // 秘钥  这两个需要和后端统一
        ivStr = ivStr ?? IV; // 偏移量  这两个需要和后端统一
        // 字符串类型的key用之前需要用uft8先parse一下才能用
        const key = CryptoJS.enc.Utf8.parse(keyStr);
        const iv = CryptoJS.enc.Utf8.parse(ivStr);
        const decrypt = CryptoJS.AES.decrypt(info, key, {
            iv,//偏移量
            mode: CryptoJS.mode.CBC, //加密模式
            padding: CryptoJS.pad.Pkcs7,// 对应后端 PKCS5Padding  补码方式 
        });
        const CryptoJSDecrypt = CryptoJS.enc.Utf8.stringify(decrypt).toString();
        let returnData = null
        try {
            returnData = JSON.parse(CryptoJSDecrypt)
        } catch (err) {
            returnData = CryptoJSDecrypt
        }
        return returnData
    }
    console.log(decrypt('orYWcztZKmZO+P7UomQ5og=='), '六卿1 解密')
    console.log(decrypt('0WnM4/UsqpUGiJ79SCGTOg=='), '六卿2 解密')

可以直接用,可以加解密字符串或者对象,解密之后也是正常的格式;

在这里插入图片描述

参考:
https://www.cnblogs.com/huiguo/p/16601076.html
https://www.codenong.com/29512858/
https://blog.csdn.net/qq_34402069/article/details/126503916

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

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

相关文章

栈和队列OJ题讲解

💓博主个人主页:不是笨小孩👀 ⏩专栏分类:数据结构与算法👀 刷题专栏👀 C语言👀 🚚代码仓库:笨小孩的代码库👀 ⏩社区:不是笨小孩👀 🌹欢迎大家三连关注&…

mysql事务隔离级别详细讲解

mysql事务讲解 MySQL事务处理(TransAction) 大家好,我是一名热爱研究技术并且喜欢自己亲手实践的博主。 工作这么多年,一直没有深入理解MySQL的事务,因为最近也在面试,准备复习mysql的相关知识&#xff0…

verilog 实现异步fifo

理论知识参考 异步FIFO_Verilog实现_verilog实现异步fifo_Crazzy_M的博客-CSDN博客 代码 /* 位宽8bit, 位深8 */ module async_fifo#(parameter FIFO_DEPTH 8,parameter FIFO_WIDTH 8 ) (input rst_n,input wr_clk,input wr_en,input [FIFO_WIDTH - 1:0…

数据结构之红黑树

二叉搜索树对于某个节点而言,其左子树的节点关键值都小于该节点关键值,右子树的所有节点关键值都大于该节点关键值。二叉搜索树作为一种数据结构,其查找、插入和删除操作的时间复杂度都为O(logn),底数为2。但是我们说这个时间复杂度是在平衡的…

C#小轮子 Debug,Release,发布模式如何运行不同的代码

文章目录 前言C#运行模式运行模式介绍三种模式区分代码 前言 编译模式和发布模式的代码不一样是非常正常的。比较常见的是数据库不一样。编译测试数据库和发布真实的数据库地址不一样。 C#运行模式 运行模式介绍 运行模式有三种: Debug 不进行优化,…

逆向破解学习-经典贪吃蛇大作战_1.00

试玩游戏 有支付取消关键字 找静态代码 找到关键字 ![在这里插入图片描述](https://img-blog.csdnimg.cn/5d9f3cc57d18477794197ea5fae8c5ba.png Hook代码 import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XC_MethodReplacement; import de.r…

MyBatis操作数据库常用用法总结1

文章目录 1.单表查询1.1返回所有的表记录1.2根据id查找结果1.3根据名字查找结果 2.单表修改2.1修改密码 3.单表删除3.1根据id删除信息 4.单表增加(根据业务情况返回)4.1添加返回影响的行数4.2添加返回影响行数和id 5.多表查询(多)…

网易云信回声消除量化评估方法

背景 随着现代通信技术的发展,语音通信成为了人们生活中不可或缺的一部分。然而,环境噪声和回声等因素对语音通信质量产生了不良影响,降低了通信效率和用户体验,声学回声消除技术的应用变得越来越重要。如何评估回声消除的效果也变…

详解如何计算字符中的字节数

文章目录 字符概念转义 进制的表示前缀区分后缀区分 什么是ASCII产生表述局限性字节计算 什么是Unicode编码方式UCS-2UCS-4 实现方式UTF的字节序和BOM字节计算 JavaScript中使用字符字符使用缺陷规避字符使用缺陷 MIME 编码Base64编码字节计算QP(Quote-Printable) 总结 字符概念…

进阶-LayUI的基本必知入门教程使用3-layui-laydate选择的值怎么获取?苟日新一刻钟总结反观:

1 效果镇楼: 对于layui框架的刚接触没几天,但是您的年轻同事为啥能搞出来功能啊!? 到您就不行了呢? 这就是您对您饭碗的态度了吗! 但是,是您尽力了,还能说明啥子问题? 就…

SOLIDWORKS自动标注插件

在设计工作中,三维模型设计好之后,还要创建二维工程图,用来指导加工生产。二维图出图的过程是一个非常枯燥的过程,而且还需要根据公司规范来进行尺寸标注、公差标注等,所以有时候,可能建模只用了几分钟&…

在UOS系统中管理ORACLE数据库

在明确了“数字中国”建设战略后。自主创新与国产化已成为我国实现科技强国、经济强国的发展趋势与行业共识。 即信息技术应用创新产业,简称“信创”。 而现有的国产操作系统,虽然已日趋成熟,但因为很多应用软件由国外垄断,因此…

一键获取数百张免费商用人脸!AI人脸生成器来袭

随着科技的发展,人工智能正在渗透到生活的各个角落,设计行业也不例外。在网页、APP、PPT 等界面设计中,设计师经常需要插入真实的人脸素材,以增强作品的真实感和场景化。但是获取素材既不容易,质量和价格也难免成为设计…

PK Nounique CASCADE DROP INDEX keep index

Explicit Control Over Indexes when Creating, Disabling, or Dropping PK/Unique Constraints (Doc ID 139666.1)​编辑To Bottom PURPOSEIn Oracle 9i, the DBA has an explicit control over how indexes are affectedwhile creating, disabling, or dropping Primary Ke…

【网络基础实战之路】基于BGP协议连接三个AS区域的实战详解

系列文章传送门: 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 【网络基础实战之路】基于…

网页版的微信客户管理系统是怎样的?

登录账号密码: 微信扫码登录到系统上: 支持多个微信号登录到系统,聚合管理聊天,可以快速查看客服号的聊天记录 群发助手:群发可突破200 朋友圈功能:定时发圈,支持多个微信账号同步发圈、跟圈和一…

恒运资本:投资前瞻:储能产业迎政策密集支持 AIGC有望进入加速状态

昨日,沪指、深成指盘中弱势下探,创业板指冲高回落。到收盘,沪指跌0.49%报3244.49点,深成指跌0.53%报11039.45点,创业板指微跌0.01%报2228.73点,科创50指数跌0.85%;两市合计成交7366亿元&#xf…

STM32 F103C8T6学习笔记4:时钟树、滴答计时器、定时器定时中断

今日理解一下STM32F103 C8T6的时钟与时钟系统、滴答计时器、定时器计时中断的配置,文章提供原理,代码,测试工程下载。 目录 时钟树与时钟系统: 滴答计时器: 定时器计时中断: 测试结果: 测…

echarts3d柱状图

//画立方体三个面 const CubeLeft echarts.graphic.extendShape({shape: {x: 0,y: 0,width: 9.5, //柱状图宽zWidth: 4, //阴影折角宽zHeight: 3, //阴影折角高},buildPath: function (ctx, shape) {const api shape.api;const xAxisPoint api.coord([shape.xValue, 0]);con…

OSCS 闭门研讨第一期实录:软件供应链安全建设价值

2023 年 7 月 18 日晚 19:30,软件供应链安全技术交流群(OSCS)组织了第一次线上的闭门研讨会,本次研讨会我们收到 71 个来自各个企业关注软件供应链安全的技术专家的报名,根据研讨会参与规则要求,我们对报名…