当前位置: 首页 > news >正文

crypto-js中AES的加解密封装

在项目中安装依赖:

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一下 不看是否原本是对象// 大多数 我们还是使用的 JSONword = typeof word === 'object' ? JSON.stringify(word) : word;keyStr = keyStr ?? KEY; //判断是否存在ksy,不存在就用定义好的keyivStr = 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 = nulltry {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.lryc.cn/news/117272.html

相关文章:

  • 【计算机视觉】MoCo v2 讲解
  • 如何解决亚马逊银行账户验证问题?来看看这些技巧吧!
  • Android多渠道打包+自动签名工具 [原创]
  • nodejs实现解析chm文件列表,无需转换为PDF文件格式,在线预览chm文件以及目录,不依赖任何网页端插件
  • .net core background service
  • 前端开发的工作职责精选【10篇】
  • SpringBoot 升级内嵌Tomcat
  • react搭建在线编辑html的站点——引入grapes实现在线拖拉拽编辑html
  • Nginx反向代理服务配置和负载均衡配置
  • react钩子函数理解
  • 医疗保健中的 NLP:实体链接
  • java编程规范
  • 合宙Air724UG LuatOS-Air script lib API--sim
  • 【网络基础实战之路】基于三个分公司的内网搭建并连接运营商的实战详解
  • (Python)Requests+Pytest+Allure接口自动化测试框架从0到1搭建
  • 实现vuex数据持久化处理
  • Vue-系统登录进入首页后禁用浏览器返回键
  • Hadoop理论及实践-HDFS的Namenode及Datanode(参考Hadoop官网)
  • 第四十九天
  • ArcGIS Pro简介下载安装地址
  • MySQL 存储过程、函数、触发器、事件
  • 【LeetCode】121. 买卖股票的最佳时机 -
  • 解决Vue+Element-UI 进行From表单校验时出现了英文提示问题
  • cpolar内网穿透的安装
  • OPENCV C++(十)gramm矫正+直方图均衡化
  • 并发——ThreadPoolExecutor 类简单介绍
  • SharePoint 审核和监控工具
  • java+springboot+mysql法律咨询网
  • 无涯教程-Perl - getservbyport函数
  • iOS开发-JsonModel的学习及使用