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前后端项目接口校验通信数据完整性
方案:使用国密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套接字) ※信号 软中断,信号提供了一种处理异步事件的方法,作为进程通信的一种机制&am…...
idea debug时提示”Method breakpoints may dramatically slow down debugging“的解决办法
问题现象 今天同事喊我过去看一个问题,项目正常启动的时候没问题,debug模式就卡住了,很久不动。我推测是哪个断点导致的,一看断点果然有情况。在方法上打了断点。 解决方式(Android Studio一样的解决) 1、View Brea…...
计算机缺失msvcp100.dll如何解决?教你5种简单高效的修复方法
在现代科技发展的时代,计算机已经成为我们生活和工作中不可或缺的工具。然而,在使用计算机的过程中,我们常常会遇到各种问题和困扰。其中之一就是计算机找不到msvcp100.dll文件。这个问题可能会给我们的生活和工作带来很多不便,下…...
对硬盘的设想2:纸存,硬指针,软指针
“纸存”是设想中的存储器,它只能改写两次:写一次,再改一次,然后就不能再动了。就像拿着钢笔在纸上写字一样,所以叫纸存。 硬指针P、软指针S S abcd S aPcdPx P aPcdPx S aycd ①一个软指针S,指向数据abcd…...
Python在股票交易分析中的应用:布林带与K线图的实战回测
引言 在股票交易的世界中,技术分析是投资者们用来预测市场动向的重要工具。布林带(Bollinger Bands)作为一种动态波动范围指标,因其直观性和实用性而广受欢迎。本文将通过Python代码,展示如何使用布林带结合K线图来分…...
现代密码学-认证、消息认证码
什么是单向散列函数 单向散列函数(one way hash function):一个输入:消息(message),一个固定长度的输出(散列值,hash value),根据散列值检查消息完整性(integrity) 单向散列函数也称为消息摘要…...
在Java中为什么对a赋值为10,在进行a++时还是等于10呢
首先我们看这样一组代码 public class demo1 {public static void main(String[] args) {int a10;aa;System.out.println(a);} } 结果:10不是在第二步有a操作吗?为什么还是10呢? a的执行步骤如下: 保存当前a的值(即10…...
免费数据库同步软件
在信息化日益发展的今天,数据同步成为了企业和个人用户不可或缺的一部分。数据库同步软件作为数据同步的重要工具,能够帮助我们实现不同数据库系统之间的数据复制和同步,确保数据的一致性和完整性。本文将介绍几款免费数据库同步软件…...
如何轻松修改Windows远程连接的端口号
为了增强远程连接的安全性,最好修改默认的远程桌面协议(RDP)端口号。以下步骤将指导您如何修改Windows注册表中的端口设置,并相应地更新防火墙规则。 一、修改注册表中的端口号 打开注册表编辑器: 按下Win R键&#…...
Leetcode 54. 螺旋矩阵(二维数组移动坐标)
54. 螺旋矩阵 使用vis数组记录该位置是否已经被访问 定义一个int型dir来记录方向,0123分别代表右下左上 当越界或碰壁已访问的位置后,修改dir并计算下一个位置 否则根据原dir计算下一个位置 class Solution {public List<Integer> spiralOrder(i…...
深度图的方法实现加雾,Synscapes数据集以及D455相机拍摄为例
前言 在次之前,我们已经做了图像加雾的一些研究,这里我们将从深度图的方法实现加雾展开细讲 图像加雾算法的研究与应用_图像加雾 算法-CSDN博客 接下来将要介绍如何使用深度图像生成雾效图像的方法。利用Synscapes数据集,通过读取EXR格式的…...
QT: 读写ini配置文件(实现qml界面登录,修改)
目录 一.功能介绍 二.暴露属性 三.指定INI文件的路径和格式。 四.登录操作 1.检查INI文件中是否含有登录信息; 2.读取存储的ID; 3.读取存储的密码; 4.成功返回1;失败返回2; 五.修改账号 1.检查INI文件中是否含有登录信…...
DevOps 安全集成:从开发到部署,全生命周期安全守护
目录 一、DevOps 安全集成:为什么要做? 二、DevOps 安全集成:如何做? 三、DevOps 安全集成的优势 四、DevOps 安全集成:一些最佳实践 五、DevOps 安全集成:未来展望 六、思考与建议 七、总结 DevOps…...
R语言数据分析15-xgboost模型预测
XGBoost模型预测的主要大致思路: 1. 数据准备 首先,需要准备数据。这包括数据的读取、预处理和分割。数据应该包括特征和目标变量。 步骤: 读取数据:从CSV文件或其他数据源读取数据。数据清理:处理缺失值、异常值等…...
重构大学数学基础_week04_从点积理解傅里叶变换
这周我们来看一下傅里叶变换。傅里叶变换是一种在数学和许多科学领域中广泛应用的分析方法,它允许我们将信号或函数从其原始域(通常是时间域或空间域)转换到频域表示。在频域中,信号被表示为其组成频率的幅度和相位,这…...
Shell以及Shell编程
Shell的任务 ①分析命令; ②处理通配符、变量替换、命令替换、重定向、管道和作业控制; ③搜索命令并执行。 内部命令:内嵌在Shell中。 外部命令:存在于磁盘上的独立可执行文件。 #!/bin/bash #! 称为一个幻数&…...
从记忆到想象:探索AI的智能未来
引言 人工智能(AI)在信息处理、数据分析和任务自动化等方面展现了强大的能力。然而,在人类独有的记忆和想象力领域,AI仍然有很长的路要走。加利福尼亚大学戴维斯分校的心理学和神经科学教授查兰兰加纳特(Charan Ranga…...
“安全生产月”专题报道:AI智能监控技术如何助力安全生产
今年6月是第23个全国“安全生产月”,6月16日为全国“安全宣传咨询日”。今年全国“安全生产月”活动主题为“人人讲安全、个个会应急——畅通生命通道”。近日,国务院安委会办公室、应急管理部对开展好2024年全国“安全生产月”活动作出安排部署。 随着科…...
【转】ES, 广告索引
思考: 1)直接把别名切换到上一个版本索引 --解决问题 2)广告层级索引如何解决? -routing、join 3)查询的过程:query and fetch, 优化掉fetch 4)segment合并策略 5)全量写入时副…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
