前后端AES对称加密 前端TS 后端Go

注意点

前后端的秘钥和偏移量IV都必须是16/24/32字节,且需要保持一致。

后端

func (receiver *basicUtils) AesDecrypt(str string) string {// 将加密字符串转换为字节数组encryptedData, _ := base64.StdEncoding.DecodeString(str)// 创建一个新的AES解密器key := []byte(global.GVA_CONFIG.App.Secret)  // 密钥与前端保持一致iv := []byte(global.GVA_CONFIG.App.SecretIv) // 偏移量与前端保持一致block, _ := aes.NewCipher(key)// 使用CBC模式解密mode := cipher.NewCBCDecrypter(block, iv)decryptedData := make([]byte, len(encryptedData))mode.CryptBlocks(decryptedData, encryptedData)// 移除填充padding := int(decryptedData[len(decryptedData)-1])decryptedData = decryptedData[:len(decryptedData)-padding]// 将解密后的字节数组转换为字符串decryptedStr := string(decryptedData)return decryptedStr
}

前端

import CryptoJS from "crypto-js"class Crypto {encrypt = (str: string): string => {const _key = CryptoJS.enc.Utf8.parse(import.meta.env.VITE_BASE_SECRET)const _str =  CryptoJS.enc.Utf8.parse(str)const _iv =CryptoJS.enc.Utf8.parse(import.meta.env.VITE_BASE_SECRET_IV)return CryptoJS.AES.encrypt(_str, _key,{iv:_iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7}).toString()}decrypt = (str: string): string => {const _iv =CryptoJS.enc.Utf8.parse(import.meta.env.VITE_BASE_SECRET_IV)const _key = CryptoJS.enc.Utf8.parse(import.meta.env.VITE_BASE_SECRET)return CryptoJS.AES.decrypt(str, _key,{iv:_iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)}cryptCheck = (str1: string, str2: string): boolean => str1 === this.decrypt(str2)
}export const crypto = new Crypto()

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

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

相关文章

【core analyzer】core analyzer的介绍和安装详情

目录 🌞1. core和core analyzer的基本概念 🌼1.1 coredump文件 🌼1.2 core analyzer 🌞2. core analyzer的安装详细过程 🌼2.1 方式一 简单但不推荐 🌼2.2 方式二 推荐 🌻2.2.1 安装遇到…

TCP/IP 协议栈在 Linux 内核中的 运行时序分析

1、Linux内核概述 1.1 Linux内核结构 一个完整的Linux内核一般由5部分组成,它们分别是内存管理、进程管理、进程间通信、bai虚拟文件系统和网络接口。 1、内存管理 内存管理主要完成的是如何合理有效地管理整个系统的物理内存,同时快速响应内核各个子…

数据可视化基础与应用-04-seaborn库人口普查分析--如何做人口年龄层结构金字塔

总结 本系列是数据可视化基础与应用的第04篇seaborn,是seaborn从入门到精通系列第3篇。本系列主要介绍基于seaborn实现数据可视化。 参考 参考:我分享了一个项目给你《seaborn篇人口普查分析–如何做人口年龄层结构金字塔》,快来看看吧 数据集地址 h…

B3647 【模板】Floyd

【模板】Floyd 题目描述 给出一张由 n n n 个点 m m m 条边组成的无向图。 求出所有点对 ( i , j ) (i,j) (i,j) 之间的最短路径。 输入格式 第一行为两个整数 n , m n,m n,m,分别代表点的个数和边的条数。 接下来 m m m 行,每行三个整数 u …

dalle2介绍

dalle2是一个基于强化学习的图像生成模型,是dalle模型的改进版本。它由OpenAI团队开发,旨在生成高质量的、多样化的图像。 dalle2的核心思想是利用强化学习将图像生成过程转化为一个马尔可夫决策过程。它采用了一个称为"敌对生成网络"&#x…

7 种实现 CSS 三角形的原理与方法 以及 三角形在网页设计中的作用

三角形在网页设计中不仅是图形设计的基本元素,更是实现视觉引导、空间构建、情绪传达、品牌塑造、性能优化以及创新表达的重要工具。其广泛应用和多功能性使其成为设计师手中不可或缺的设计语言组成部分。本文介绍了7种CSS实现三角形的方法。 CSS实现三角形主要有以…

Gin中间件函数原理

在Gin框架中,Context.Next() 方法是中间件处理的核心,它控制着请求处理链(HandlersChain)中的执行流。下面是对这个函数及相关概念的详细解释: func (c *Context) Next() 这个方法定义在 Context 结构体上&#xff0c…

MYSQL执行过程和顺序详解

一、前言 1.1、说明 就MySQL在执行过程、sql执行顺序,以及一些相关关键字的注意点方面的学习分享内容。 在参考文章的基础上,会增加自己的理解、看法,希望本文章能够在您的学习中提供帮助。 如有错误的地方,欢迎指出纠错&…

AdaBoost 算法

目录 什么是 AdaBoost 算法? Adaboost 的 7 个优缺点 集成学习:人多力量大: Bagging:民主。Boosting :挑选精英。长短期记忆网络:引入遗忘机制 生成对抗网络 :物竞天择适者生存 首先,了解一下集成学习及 Boosting 算法 集成学习归属于机器学习,他是一种「训练思路…

Project Euler_Problem 159_Digital Root Sums of Factorisations

原题目&#xff1a; 解题思路&#xff1a; 代码&#xff1a; void solve() {ll i, j,k,x,y,z,p,q,u,v;N 1000000, NN 1024;//N 20;double a, b, c,d;M.NT.get_prime_Euler(2000000);for (i 2; i < N; i) {x (i-1)%91;for (j 2; j<sqrt(i); j) {if (i % j 0) {x …

SynchronizedMap 和 ConcurrentHashMap 有什么区别

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:SynchronizedMap 和 ConcurrentHashMap 有什么区别 锁的粒度:SynchronizedMap 使用全局锁,而 ConcurrentHashMap 使用锁分离技术,每个段有自己的…

宝妈如何在家创造收入?五种兼职工作让你轻松赚钱!

许多宝妈为了陪伴孩子成长&#xff0c;毅然选择了全职妈妈的角色&#xff0c;然而&#xff0c;她们内心仍希望能有一份收入&#xff0c;实现经济独立。于是&#xff0c;寻找既能照顾家庭又能赚钱的工作成了她们的迫切需求。 然而&#xff0c;这样的需求也往往让宝妈们成为一些…

WLAN故障处理

目录 一.wlan基础知识 1.wlan是什么 2.WLAN配置步骤 &#xff08;1&#xff09;AP上线 &#xff08;2&#xff09;业务配置 二.WLAN故障处理一般步骤 1.评估故障严重程度 2.收集信息填写故障报告 &#xff08;1&#xff09;组网信息 (2)运行状态 &#xff08;3&#…

Linux三剑客-sed、awk、egrep(上)

一、知识梗概 二、正则表达式 定义&#xff1a;正则表达式是一种强大的文本处理工具&#xff0c;用于在文本中搜索符合特定模式的字符串。它由一系列特殊字符和普通字符组成&#xff0c;可以定义复杂的搜索模式。正则表达式被广泛应用于各种编程语言和文本处理工具中。 简单来…

antDesignVue 使用-持续更新

背景 vue3viteantdesignvuevue-router 1,全局完整注册 1.1下载antdesignvue npm i --save ant-design-vue 或者 npm install ant-design-vuenext --save 1.2在mian.ts中引入 import { createApp } from vue import { createPinia } from piniaimport App from ./App.vue …

微信跳转页面时发生报错

报错如下图所示&#xff1a; 解决方法&#xff1a;&#xff08;从下面四种跳转方式中任选一种&#xff0c;哪种能实现效果就用哪个&#xff09; 带历史回退 wx.navigateTo() //不能跳转到tabbar页面 不带历史回退 wx.redirectTo() //跳转到另一个页面wx.switchTab() //只能…

读书笔记:高效能人士的七个习惯

前言 恐惧感和不安全感 现代社会&#xff0c;太多的人饱受恐惧感的折磨。他们恐惧将来&#xff0c;恐惧失业&#xff0c;恐惧无力养家。这种弱点&#xff0c;常常助长了一种倾向&#xff1a;无论在工作时&#xff0c;还是回到家中&#xff0c;都倾向于零风险的生活&#xff0…

MathType2024中文网站7.9最新版本数学公式编辑器下载

MathType是一款专业的数学公式编辑器&#xff0c;由Design Science公司开发。它为用户提供了一个便捷的方式来创建和编辑复杂的数学公式&#xff0c;适用于各种文档和出版物。MathType与常见的文字处理软件和演示程序配合使用&#xff0c;能够在各种文档中加入复杂的数学公式&a…

【MYSQL】MySQL整体结构

无论你是前端还是后端&#xff0c;只要是一个合格的开发者&#xff0c;对于MySQL这个名词相信都不陌生&#xff0c;MySQL逐渐成为了最受欢迎的关系型数据库&#xff0c;无论你是大前端&#xff0c;亦或是Java、Go、Python、C/C、PHP....等这些语言的程序员&#xff0c;对于MySQ…

Linux下SPI驱动:SPI主机驱动简介

一. 简介 SPI 驱动框架和 I2C 很类似&#xff0c;都分为主机控制器驱动和设备驱动&#xff0c;主机控制器也就是 SOC的 SPI 控制器接口。 例如&#xff0c;在裸机篇中的《第二十七章 SPI 实验》&#xff0c;我们编写了 bsp_spi.c 和 bsp_spi.h 这两个文件&#xff0c;这…