当前位置: 首页 > 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进行排序,对空属性进行清除操作即可

http://www.lryc.cn/news/367052.html

相关文章:

  • 进程通信(IPC-Inter Process Communication)
  • idea debug时提示”Method breakpoints may dramatically slow down debugging“的解决办法
  • 计算机缺失msvcp100.dll如何解决?教你5种简单高效的修复方法
  • 对硬盘的设想2:纸存,硬指针,软指针
  • Python在股票交易分析中的应用:布林带与K线图的实战回测
  • 现代密码学-认证、消息认证码
  • 在Java中为什么对a赋值为10,在进行a++时还是等于10呢
  • 免费数据库同步软件
  • 如何轻松修改Windows远程连接的端口号
  • Leetcode 54. 螺旋矩阵(二维数组移动坐标)
  • 深度图的方法实现加雾,Synscapes数据集以及D455相机拍摄为例
  • QT: 读写ini配置文件(实现qml界面登录,修改)
  • DevOps 安全集成:从开发到部署,全生命周期安全守护
  • R语言数据分析15-xgboost模型预测
  • 重构大学数学基础_week04_从点积理解傅里叶变换
  • Shell以及Shell编程
  • 从记忆到想象:探索AI的智能未来
  • “安全生产月”专题报道:AI智能监控技术如何助力安全生产
  • 【转】ES, 广告索引
  • Unity学习要点
  • 简单使用phpqrcode 生成二维码图片
  • 软考架构-计算机网络考点
  • 渗透测试之内核安全系列课程:Rootkit技术初探(三)
  • 大模型日报2024-06-08
  • leetcode 1631.最小体力消耗路径
  • 【ARM64 常见汇编指令学习 19.2 -- ARM64 地址加载指令 ADR 详细介绍】
  • vscode输出控制台中文显示乱码最有效解决办法
  • springboot + Vue前后端项目(第十五记)
  • 如何在Windows 11中恢复丢失的快速访问菜单?这里提供解决办法
  • 变声器软件免费版有哪些?国内外12大热门变声器大盘点!(新)