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

springboot+vue前后端项目接口校验通信数据完整性

方案:使用国密SM3算法实现数字签名

服务端

maven的pom文件引用

		 <!-- 国密算法支持 --><dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15to18</artifactId><version>1.69</version></dependency><!-- https://mvnrepository.com/artifact/cn.hutool/hutool-crypto --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-crypto</artifactId><version>5.8.26</version></dependency>

编写SMUtils工具类

 /*** 生成hmcSm3十六进制摘要* @param data 数据* @param key 盐值*/public static String sm3Hash(String key,String data){HMac hMac = SmUtil.hmacSm3(key.getBytes(StandardCharsets.UTF_8));return hMac.digestHex(data);}

前端调用接口时,通过请求头传入校验签名,请求头header key自定义 例如:X-HMAC-SM3

    @PostMapping(value = "/updateUserInfo")public AjaxResult updateUserInfo(@RequestBody WhUser whUser){// 校验用户数据完整性String hmac = request.getHeader("X-HMAC-SM3");if (!StringUtils.hasLength(hmac)) {return AjaxResult.error("校验数据失败,请您刷新重试");}if (!SMUtils.sm3Hash(JSON.toJSONString(whUser)).equals(hmac)) {return AjaxResult.error("校验数据失败,请您刷新重试");}}

前端vue使用SM3加密,是否加盐,需要前后端约定

安装依赖包:npm install --save sm-crypto
引入:import { sm3 } from 'sm-crypto';加盐key:sm3(password.value,16进制的盐值)
//后端给的盐值
strToHex(str: string) {var hexCharCode = [];for (var i = 0; i < str.length; i++) {hexCharCode.push(str.charCodeAt(i).toString(16));}return hexCharCode.join('');
}不加盐key:sm3(password.value)

注意:如果出现签名不一致,主要java端json字符串和前端加密json字符串不一致导致,需要前后都根据属性key进行排序,对空属性进行清除操作即可

相关文章:

springboot+vue前后端项目接口校验通信数据完整性

方案&#xff1a;使用国密SM3算法实现数字签名 服务端 maven的pom文件引用 <!-- 国密算法支持 --><dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15to18</artifactId><version>1.69</version><…...

进程通信(IPC-Inter Process Communication)

进程之间的通信通过内核空间实现 IPC技术 ①管道(匿名管道/命名管道-FIFO队列) ②System V IPC(消息队列、信号量和共享内存) ③套接字(UNIX套接字&Internet套接字) ※信号 软中断&#xff0c;信号提供了一种处理异步事件的方法&#xff0c;作为进程通信的一种机制&am…...

idea debug时提示”Method breakpoints may dramatically slow down debugging“的解决办法

问题现象 今天同事喊我过去看一个问题&#xff0c;项目正常启动的时候没问题&#xff0c;debug模式就卡住了&#xff0c;很久不动。我推测是哪个断点导致的&#xff0c;一看断点果然有情况。在方法上打了断点。 解决方式(Android Studio一样的解决&#xff09; 1、View Brea…...

计算机缺失msvcp100.dll如何解决?教你5种简单高效的修复方法

在现代科技发展的时代&#xff0c;计算机已经成为我们生活和工作中不可或缺的工具。然而&#xff0c;在使用计算机的过程中&#xff0c;我们常常会遇到各种问题和困扰。其中之一就是计算机找不到msvcp100.dll文件。这个问题可能会给我们的生活和工作带来很多不便&#xff0c;下…...

对硬盘的设想2:纸存,硬指针,软指针

“纸存”是设想中的存储器&#xff0c;它只能改写两次&#xff1a;写一次&#xff0c;再改一次&#xff0c;然后就不能再动了。就像拿着钢笔在纸上写字一样&#xff0c;所以叫纸存。 硬指针P、软指针S S abcd S aPcdPx P aPcdPx S aycd ①一个软指针S&#xff0c;指向数据abcd…...

Python在股票交易分析中的应用:布林带与K线图的实战回测

引言 在股票交易的世界中&#xff0c;技术分析是投资者们用来预测市场动向的重要工具。布林带&#xff08;Bollinger Bands&#xff09;作为一种动态波动范围指标&#xff0c;因其直观性和实用性而广受欢迎。本文将通过Python代码&#xff0c;展示如何使用布林带结合K线图来分…...

现代密码学-认证、消息认证码

什么是单向散列函数 单向散列函数&#xff08;one way hash function&#xff09;&#xff1a;一个输入&#xff1a;消息&#xff08;message&#xff09;,一个固定长度的输出(散列值&#xff0c;hash value),根据散列值检查消息完整性(integrity) 单向散列函数也称为消息摘要…...

在Java中为什么对a赋值为10,在进行a++时还是等于10呢

首先我们看这样一组代码 public class demo1 {public static void main(String[] args) {int a10;aa;System.out.println(a);} } 结果&#xff1a;10不是在第二步有a操作吗&#xff1f;为什么还是10呢&#xff1f; a的执行步骤如下&#xff1a; 保存当前a的值&#xff08;即10…...

免费数据库同步软件

在信息化日益发展的今天&#xff0c;数据同步成为了企业和个人用户不可或缺的一部分。数据库同步软件作为数据同步的重要工具&#xff0c;能够帮助我们实现不同数据库系统之间的数据复制和同步&#xff0c;确保数据的一致性和完整性。本文将介绍几款免费数据库同步软件&#xf…...

如何轻松修改Windows远程连接的端口号

为了增强远程连接的安全性&#xff0c;最好修改默认的远程桌面协议&#xff08;RDP&#xff09;端口号。以下步骤将指导您如何修改Windows注册表中的端口设置&#xff0c;并相应地更新防火墙规则。 一、修改注册表中的端口号 打开注册表编辑器&#xff1a; 按下Win R键&#…...

Leetcode 54. 螺旋矩阵(二维数组移动坐标)

54. 螺旋矩阵 使用vis数组记录该位置是否已经被访问 定义一个int型dir来记录方向&#xff0c;0123分别代表右下左上 当越界或碰壁已访问的位置后&#xff0c;修改dir并计算下一个位置 否则根据原dir计算下一个位置 class Solution {public List<Integer> spiralOrder(i…...

深度图的方法实现加雾,Synscapes数据集以及D455相机拍摄为例

前言 在次之前&#xff0c;我们已经做了图像加雾的一些研究&#xff0c;这里我们将从深度图的方法实现加雾展开细讲 图像加雾算法的研究与应用_图像加雾 算法-CSDN博客 接下来将要介绍如何使用深度图像生成雾效图像的方法。利用Synscapes数据集&#xff0c;通过读取EXR格式的…...

QT: 读写ini配置文件(实现qml界面登录,修改)

目录 一.功能介绍 二.暴露属性 三.指定INI文件的路径和格式。 四.登录操作 1.检查INI文件中是否含有登录信息&#xff1b; 2.读取存储的ID&#xff1b; 3.读取存储的密码; 4.成功返回1&#xff1b;失败返回2&#xff1b; 五.修改账号 1.检查INI文件中是否含有登录信…...

DevOps 安全集成:从开发到部署,全生命周期安全守护

目录 一、DevOps 安全集成&#xff1a;为什么要做&#xff1f; 二、DevOps 安全集成&#xff1a;如何做&#xff1f; 三、DevOps 安全集成的优势 四、DevOps 安全集成&#xff1a;一些最佳实践 五、DevOps 安全集成&#xff1a;未来展望 六、思考与建议 七、总结 DevOps…...

R语言数据分析15-xgboost模型预测

XGBoost模型预测的主要大致思路&#xff1a; 1. 数据准备 首先&#xff0c;需要准备数据。这包括数据的读取、预处理和分割。数据应该包括特征和目标变量。 步骤&#xff1a; 读取数据&#xff1a;从CSV文件或其他数据源读取数据。数据清理&#xff1a;处理缺失值、异常值等…...

重构大学数学基础_week04_从点积理解傅里叶变换

这周我们来看一下傅里叶变换。傅里叶变换是一种在数学和许多科学领域中广泛应用的分析方法&#xff0c;它允许我们将信号或函数从其原始域&#xff08;通常是时间域或空间域&#xff09;转换到频域表示。在频域中&#xff0c;信号被表示为其组成频率的幅度和相位&#xff0c;这…...

Shell以及Shell编程

Shell的任务 ①分析命令&#xff1b; ②处理通配符、变量替换、命令替换、重定向、管道和作业控制&#xff1b; ③搜索命令并执行。 内部命令&#xff1a;内嵌在Shell中。 外部命令&#xff1a;存在于磁盘上的独立可执行文件。 #&#xff01;/bin/bash #! 称为一个幻数&…...

从记忆到想象:探索AI的智能未来

引言 人工智能&#xff08;AI&#xff09;在信息处理、数据分析和任务自动化等方面展现了强大的能力。然而&#xff0c;在人类独有的记忆和想象力领域&#xff0c;AI仍然有很长的路要走。加利福尼亚大学戴维斯分校的心理学和神经科学教授查兰兰加纳特&#xff08;Charan Ranga…...

“安全生产月”专题报道:AI智能监控技术如何助力安全生产

今年6月是第23个全国“安全生产月”&#xff0c;6月16日为全国“安全宣传咨询日”。今年全国“安全生产月”活动主题为“人人讲安全、个个会应急——畅通生命通道”。近日&#xff0c;国务院安委会办公室、应急管理部对开展好2024年全国“安全生产月”活动作出安排部署。 随着科…...

【转】ES, 广告索引

思考&#xff1a; 1&#xff09;直接把别名切换到上一个版本索引 --解决问题 2&#xff09;广告层级索引如何解决&#xff1f; -routing、join 3&#xff09;查询的过程&#xff1a;query and fetch, 优化掉fetch 4&#xff09;segment合并策略 5&#xff09;全量写入时副…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...