数据库签名的那些事儿

写在前面,关于签名的应用场景 除了我们后端经常使用的接口签名来校验数据这些常见的场景,对于数据安全性要求比较严格的业务来说,大部分落库的核心数据 也都需要签名,为啥? 因为怕数据库的数据被篡改数据或者被攻击了,通过数据库签名就能保证每一行数据的可靠安全性

1、常见的签名算法

老生常谈,我就不一一举例了

  • MD5
  • AES
  • RSA

2、步入正题

最近开发的某系统的一个订单的赔付的功能,那么赔付订单的流水表数据就很关键了,必须加签名- -什么?有bug?不存在的!

bug 背景:
签名检验失败:db sign check error old: 39a22a50f78b076497aa703e2677cf0e but new is: 45caf3b7b67508675c87c324c74240f8
不难看出 数据的签名校验失败了 是不是有人动过?(眼睛睁大的像个铜铃):

在这里插入图片描述

在这里插入图片描述
相信眼尖的盆友立马发现 这个时间为啥不一致啊
生成签名的时候 日志显示秒位是15,怎么到了数据库就变成16了?最后查询记录再校验签名肯定不对啊!
经过测试发现居然会进位:条件if time.millisecond > 500 就会发生进位 比如15.873 最后就变成16了 - -

3、如何规避这个进位问题

func timeTest() {defer EnterExitFunc()()fmt.Println(int(time.Now().Weekday()))now := time.Now()fmt.Printf("now: %v\n", now)dateStr := now.Format("2006-01-02 15:04:05")fmt.Println(dateStr)date, _ := time.ParseInLocation("2006-01-02 15:04:05", dateStr, now.Location())fmt.Printf("after: %v\n", date)fmt.Println(date.Format("2006-01-02 15:04:05"))
}// output打印如下:
now: 2023-08-10 15:11:00.40468 +0800 CST m=+0.000770626
2023-08-10 15:11:00
after: 2023-08-10 15:11:00 +0800 CST
2023-08-10 15:11:00

仔细看发现经常转换之后 时间的微秒位没有了 这样就规避了微秒进位问题
当然还有另外一个办法 从建表语句开始 定义字段的时候使用 datetime(6) 或 timestamp(6)

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

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

相关文章

Mysql 数据库备份

Mysql数据库导出命令: mysqldump -uroot -p123456 -h localhost -P3306 tyzk_cg --hex-blob>> D:/data/tyzk_cg_dev.20230809.sql 2>&1 &文件内容:脚本里没有创建数据库,则在执行source命令之前必须执行 use 数据库 命令 …

Mac终端前总会出现 (base) 字样解决

Mac安装了anaconda之后,终端前总会出现 (base) 字样,显示如下: (base) tinghoudeiMac ~ 具体原因是 安装了anaconda后,每次启动终端都会启动anaconda的base环境。 解决办法 设置anaconda 不自启base环境就好了: 禁用…

vue2.7如何使用vue-i18n

版本: vue:2.7.0 vue-i18n:8.28.2 一、下载 npm i vue-i18n8.28.2二、新建 新建一个文件,例如:lang,项目结构如下: index.js: import Vue from vue import VueI18n from vue-i18n…

c++ 中const 的使用

const 意味着变量无法被改变 修饰常量 const int a 3;修饰指针( 就近原则) const int* a &b; *a 3; error int* const a1 &b; a1 &b1; error 修饰类的成员 修饰类变量时,只能通过构造函数 using namespace std;class A{ public:A(…

Go Windows下开发环境配置(图文)

Go Windows下开发环境配置 下载 安装 点击下载的安装包进行安装。安装路径可以选择到自己的目录。 环境变量配置 GOROOT:(指定到安装目录下) GOPATH:(是工作空间) path:在安装时已经添加了…

go-admin 使用开发

在项目中使用redis 作为数据缓存:首先引入该包 “github.com/go-redis/redis/v8” client : redis.NewClient(&redis.Options{Addr: config.QueueConfig.Redis.Addr, // Redis 服务器地址Password: config.QueueConfig.Redis.Password, // Redis 密码&…

UNIX 系统概要

UNIX 家族UNIX 家谱家族后起之秀 LinuxUNIX vs LinuxUNIX/Linux 应用领域 UNIX 操作系统诞生与发展UNIX 操作系统概要内核常驻模块shell虚拟计算机特性 其他操作系统 LinuxRichard StallmanGNU 项目FSF 组织GPL 协议Linus Torvalds UNIX 家族 有人说,这个世界上只有…

java中list对象拷贝至新的list对象并保持两个对象独立的方法

在Java中,如果你想拷贝一个List对象到一个新的List对象,并且修改原来的List不影响新的List中的内容,有几种方法可以实现:使用构造函数: 可以使用List的构造函数,传递原始List作为参数来创建一个新的List对象…

JS method请求方式的应用

JavaScript 中的网络请求方式通常是通过浏览器提供的 XMLHttpRequest 对象或者 Fetch API 来实现的。这些请求方式用于从服务器获取数据或向服务器发送数据。以下是不同请求方式的应用示例: 1. GET 请求: GET 请求用于从服务器获取数据。它通常用于获取…

网络安全设备及部署

什么是等保定级? 之前了解了下等保定级,接下里做更加深入的探讨 文章目录 一、网路安全大事件1.1 震网病毒1.2 海康威视弱口令1.3 物联网Mirai病毒1.4 专网 黑天安 事件1.5 乌克兰停电1.6 委内瑞拉电网1.7 棱镜门事件1.8 熊猫烧香 二、法律法规解读三、安…

Python把png图片转jpg透明填充白色

问题描述 我有很多png图片,需要把它们转成jpg图片,透明部分填充为白色。 解决方法 import glob from PIL import Image# 获取所有图片路径 img_path_list glob.glob(test_img/*.png) # 遍历每一个图片 for img_path in img_path_list:image Image.o…

OpenCV 中的光流 (C++/Python)

什么是光流? 光流是一项视频中两个连续帧之间每像素运动估计的任务。基本上,光流任务意味着计算像素的位移矢量作为两个相邻图像之间的对象位移差。光流的主要思想是估计物体由其运动或相机运动引起的位移矢量。 理论基础 假设我们有一个灰度图像——具有像素强度的矩阵。我…

【知网检索稳定】第五届经济管理与文化产业国际学术会议(ICEMCI 2023)

抓住数字经济的发展机遇,推动当前文化旅游产业与经济的深度融合才能不断推进经济大格局。第五届经济管理与文化产业国际学术会议(ICEMCI 2023)将继续围绕“经济管理”与“文化产业”两大研究领域展开讨论,旨在为相关研究方向的专家…

Talk | 清华大学交叉信息研究院助理教授许华哲:具身控制中的泛化能力

本期为TechBeat人工智能社区第520期线上Talk! 北京时间8月9日(周三)20:00,清华大学交叉信息研究院助理教授—许华哲的Talk已准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “具身控制中的泛化能力”,从具身控制中视觉外…

手机app测试

一、安装、卸载、更新、运行 1.安装、卸载 应用是否可以正常安装(命令行安装;apk/ipa安装包安装)(有网,无网是否都正常)卸载过程中出现死机,断电,重启等意外的情况&…

小程序自动化测试的示例代码

目录 背景 自动化 SDK 还原用户行为 总结 背景 上述描述看似简单,但是中间还是有些难点的,第一个难点就是如何在业务人员操作小程序的时候记录操作路径,第二个难点就是如何将记录的操作路径进行还原。 自动化 SDK 如何将操作路径还原这…

哪个类包含clone方法?是Cloneable还是Object?

在Java中,clone方法是定义在Object类中的。所有的Java类都继承自Object类,因此每个Java对象都继承了clone方法。然而,要成功地使用clone方法,需要满足一些条件,其中之一是被克隆的类必须实现Cloneable接口。 虽然clone…

[C#] 简单的俄罗斯方块实现

一个控制台俄罗斯方块游戏的简单实现. 已在 github.com/SlimeNull/Tetris 开源. 思路 很简单, 一个二维数组存储当前游戏的方块地图, 用 bool 即可, true 表示当前块被填充, false 表示没有. 然后, 抽一个 “形状” 类, 形状表示当前玩家正在操作的一个形状, 例如方块, 直线…

OCR让纸质文档秒变电子文档,让自动驾驶成为现实

OCR文字识别具有广泛的应用范围,以下是一些常见和广泛应用的领域: 1. 文档数字化:OCR可以将印刷的文档、书籍、报纸等纸质文档转换为可编辑和可搜索的电子文本,从而实现文档的数字化存储和管理。这在图书馆、档案馆、企业和政府机…

关于eclipse导入部署具有增删改查的项目

目录 前言:当我们刚刚进入公司的第一步就是去部署当前公司的项目,本博客就是详细介绍怎么去部署当前公司的项目。 一,开发工具: 二,具体步骤: 2.1导入公司的项目 打开eclipse开发工具 2.2配置当前的环…