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

golang 版 E签宝请求签名鉴权方式

E签宝 请求签名鉴权方式说明

package utilsimport ("crypto/hmac""crypto/md5""crypto/sha256""encoding/base64""fmt""github.com/gogf/gf/v2/util/gconv"
)type Sign struct {secret string
}func NewSign(secret string) *Sign {return &Sign{secret}
}// DoSign 计算签名
func (s Sign) DoSign(method, path, contentMD5, headers string) string {accept := "*/*"contentType := "application/json; charset=UTF-8"date := ""// 组合拼接待签名字符串canonicalString := fmt.Sprintf("%s\n%s\n%s\n%s\n%s\n", method, accept, contentMD5, contentType, date)if headers == "" {canonicalString = fmt.Sprintf("%s%s%s", canonicalString, headers, path)} else {canonicalString = fmt.Sprintf("%s%s\n%s", canonicalString, headers, path)}// 拼接字符串fmt.Println("拼接字符串:\n" + canonicalString + "\n")// 最后计算签名return s.doSignatureBase64(canonicalString, s.secret)
}// doSignatureBase64 计算签名(HmacSHA256)
func (s Sign) doSignatureBase64(message, secret string) string {mac := hmac.New(sha256.New, []byte(secret))_, _ = mac.Write([]byte(message))encode := mac.Sum(nil)return base64.StdEncoding.EncodeToString(encode)
}// DoContentMD5Base64 计算Body体的Content-MD5值
func (s Sign) DoContentMD5Base64(bodyData any) string {// 创建一个新的MD5 hasher对象md := md5.New()// 将byte数组写入hasher中计算MD5值md.Write([]byte(gconv.String(bodyData)))// 获取MD5值的byte数组表示(16 bytes)md5Bytes := md.Sum(nil)// 转base64return base64.StdEncoding.EncodeToString(md5Bytes)
}

相关文章:

golang 版 E签宝请求签名鉴权方式

E签宝 请求签名鉴权方式说明 package utilsimport ("crypto/hmac""crypto/md5""crypto/sha256""encoding/base64""fmt""github.com/gogf/gf/v2/util/gconv" )type Sign struct {secret string }func NewSign(sec…...

QTreeView和QTableView单元格添加超链接

QTreeView和QTableView单元格添加超链接的方法类似,本文仅以QTreeView为例。 在QTableView仿Excel表头排序和筛选中已经实现了超链接的添加,但是需要借助delegate,这里介绍一种更简单的方式,无需借助delegate。 一.效果 二.实现 QHTreeView.h #ifndef QHTREEVIEW_H #def…...

【WB 深度学习实验管理】使用 PyTorch Lightning 实现高效的图像分类实验跟踪

本文使用到的 Jupyter Notebook 可在GitHub仓库002文件夹找到,别忘了给仓库点个小心心~~~ https://github.com/LFF8888/FF-Studio-Resources 在机器学习项目中,实验跟踪和结果可视化是至关重要的环节。无论是调整超参数、优化模型架构,还是监…...

SSM开发(十一) mybatis关联关系多表查询(嵌套查询,举例说明)

目录 一、背景介绍 二、一对一查询(嵌套查询) 三、一对多查询(嵌套查询) 四、嵌套查询效率评估 注:关联查询则是指在一个查询中涉及到多个表的联合查询 一、背景介绍 当对数据库的操作涉及到多张表,这在面向对象语言如Java中就涉及到了对象与对象之间的关联关系。针对多…...

The Simulation技术浅析(六):机器学习

机器学习(Machine Learning)是模拟技术(The Simulation)的重要组成部分,通过从数据中自动学习规律和模式,机器学习能够提升模拟系统的智能化水平,增强其预测、决策和优化能力。 一、监督学习(Supervised Learning) 1. 基本原理 监督学习是指利用标注数据(即输入数…...

apache-poi导出excel数据

excel导出 自动设置宽度&#xff0c;设置标题框&#xff0c;设置数据边框。 excel导出 添加依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.2</version></dependency>…...

唯一值校验的实现思路(续)

本文接着上一篇文章《唯一值校验的实现思路》&#xff0c;在后端实现唯一值校验。用代码实现。 /*** checkUniqueException[唯一值校验]** param entity 新增或编辑的学生实体* param insert 是否新增&#xff0c;如果是传入true&#xff1b;反之传入false* return void* date…...

ffmpeg基本用法

一、用法 ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... 说明&#xff1a; global options&#xff1a;全局选项&#xff0c;应用于整个 FFmpeg 进程&#xff0c;它们通常不受输入或输出部分的限制。 infile options&#xff1a;输入选…...

MYSQL第四次

目录 题目分析 代码实现 一、修改 Student 表中年龄&#xff08;sage&#xff09;字段属性&#xff0c;数据类型由 int 改变为 smallint 二、为 Course 表中 Cno 字段设置索引&#xff0c;并查看索引 三、为 SC 表建立按学号&#xff08;sno&#xff09;和课程号&#xff…...

联德胜w801开发板(六)手机蓝牙设置wifi名称和密码

一、概述 W801 是一款集成了 Wi-Fi 和蓝牙功能的芯片&#xff0c;本文将介绍如何利用 W801 的蓝牙功能&#xff0c;实现手机 APP 通过蓝牙配置 W801 连接的 Wi-Fi 名称和密码&#xff08;即配网功能&#xff09;。 二、文档查看&#xff1a; demo使用手册这里很清楚&#xf…...

Linux:库

目录 静态库 动态库 目标文件 ELF文件 ELF形成可执行 ELF可执行加载 ELF加载 全局偏移量表GOT(global offset table) 库是写好的&#xff0c;成熟的&#xff0c;可以复用的代码 现实中每个程序都要依赖很多的基础的底层库&#xff0c;不可能都是从零开始的 库有两种…...

向量数据库简单对比

文章目录 一、Chroma二、Pinecone/腾讯云VectorDB/VikingDB三、redis四、Elasticsearch五、Milvus六、Qdrant七、Weaviate八、Faiss 一、Chroma 官方地址&#xff1a; https://www.trychroma.com/优点 ①简单&#xff0c;非常简单构建服务。 ②此外&#xff0c;Chroma还具有自…...

大模型基本原理(四)——如何武装ChatGPT

传统的LLM存在几个短板&#xff1a;编造事实、计算不准确、数据过时等&#xff0c;为了应对这几个问题&#xff0c;可以借助一些外部工具或数据把AI武装起来。 实现这一思路的框架包括RAG、PAL、ReAct。 1、RAG&#xff08;检索增强生成&#xff09; LLM生成的内容会受到训练…...

从零开始:使用Jenkins实现高效自动化部署

在这篇文章中我们将深入探讨如何通过Jenkins构建高效的自动化部署流水线&#xff0c;帮助团队实现从代码提交到生产环境部署的全流程自动化。无论你是Jenkins新手还是有一定经验的开发者&#xff0c;这篇文章都会为你提供实用的技巧和最佳实践&#xff0c;助你在项目部署中走得…...

Spring Cloud工程完善

目录 完善订单服务 启动类 配置文件 实体类 Controller Service Mapper 测试运行 完成商品服务 启动类 配置文件 实体类 Controller Service Mapper 测试运行 远程调用 需求 实现 1.定义RestTemplate 2.修改order-service中的OrderService 测试运行 Rest…...

SSM仓库物品管理系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.用户登录代码&#xff1a;2.保存物品信息代码&#xff1a;3.删除仓库信息代码&#xff1a; 一、项目演示 项目演示地址&#xff1a; 视频地址 二、项目介绍 项目描述&#xff1a;这是一个基于SSM框架开发的仓库…...

UI自动化测试中如何处理验证码?

在UI自动化测试中处理验证码是常见的技术挑战&#xff0c;以下是分步解决方案及实际应用建议&#xff1a; 一、验证码处理策略对比 方法实现方式优点缺点适用场景禁用验证码测试环境配置关闭验证码生成简单快捷&#xff0c;零成本无法测试验证码功能本身非验证码相关功能测试万…...

华为交换机堆叠配置

一、CSS堆叠集群配置&#xff08;框式交换机&#xff09; 1、通过集群卡连接方式组建集群 [SwitchA] set css mode css-card \\配置集群卡连接方式 [SwitchA] set css id 1 \\配置成员交换机的集群ID(缺省值为1) [SwitchA] set css priority 100 \\配…...

Vue 和 dhtmlx-gantt 实现图表构建动态多级甘特图效果 ,横坐标为动态刻度不是日期

注意事项:1、横坐标根据日期转换成时间刻度在( gantt.config.scales);2、获取时间刻度的最大值(findMaxRepairTime);3、甘特图多级列表需注意二级三级每个父子id需要唯一(convertData) 安装依赖 npm install dhtmlx-gantt --save 在当前页引入和配置 dhtmlx-gantt im…...

collabora online+nextcloud+mariadb在线文档协助

1、环境 龙蜥os 8.9 docker 2、安装docker dnf -y install dnf-plugins-core dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sed -i shttps://download.docker.comhttps://mirrors.tuna.tsinghua.edu.cn/docker-ce /etc/yum.repos.…...

告别云端:在百元ESP32-S3上实现离线婴儿哭声识别,隐私与实时性我全都要

边缘智能革命&#xff1a;用ESP32-S3打造零隐私风险的婴儿监护终端 当科技与育儿需求碰撞&#xff0c;我们面临一个核心矛盾&#xff1a;如何在不牺牲隐私的前提下实现智能化监护&#xff1f;传统方案依赖云端处理&#xff0c;却让敏感数据暴露在传输与存储环节。本文将揭示一种…...

AFL++实战:从零开始用WSL搭建模糊测试环境(附libxml2案例)

AFL实战指南&#xff1a;WSL环境下的模糊测试从入门到精通 模糊测试&#xff08;Fuzz Testing&#xff09;作为软件安全测试的重要手段&#xff0c;近年来在漏洞挖掘领域展现出惊人的效果。对于Windows平台开发者而言&#xff0c;Windows Subsystem for Linux&#xff08;WSL&…...

良久团购报单查单小程序开发

需求分析与规划 明确小程序的核心功能&#xff1a;报单&#xff08;提交订单&#xff09;、查单&#xff08;查询订单状态&#xff09;、团购管理&#xff08;商品展示、拼团进度&#xff09;。 确定用户角色&#xff1a;普通用户&#xff08;参与团购&#xff09;、管理员&…...

【Coze】从零开始:AI Agent开发平台的入门指南

1. Coze平台初体验&#xff1a;零基础也能玩转AI开发 第一次接触Coze时&#xff0c;我完全被它的易用性震惊了。作为一个没有任何编程背景的市场专员&#xff0c;我居然在半小时内就做出了能自动回复客户咨询的AI助手。这个由字节跳动开发的AI Agent开发平台&#xff0c;真正实…...

避坑指南:通达信DLL加密常见的5大误区与替代方案

通达信指标加密实战&#xff1a;5种DLL开发陷阱与零代码解决方案 在量化交易领域&#xff0c;指标公式的保护一直是开发者面临的棘手问题。最近三个月内&#xff0c;某金融开发者社区关于"通达信DLL加密失败"的求助帖增长了47%&#xff0c;暴露出传统加密方案存在显…...

Java 无人图书借阅系统设计与完整源码实现

以下是一个基于Java的无人图书借阅系统的设计与完整源码实现方案&#xff0c;涵盖系统架构、核心模块、数据库设计、关键代码实现及部署建议&#xff1a;一、系统架构设计1. 分层架构表现层&#xff1a;用户端&#xff1a;微信小程序&#xff08;UniApp开发&#xff09; H5页面…...

MiniCPM-V-2_6嵌入式AI应用实战:STM32F103C8T6边缘推理集成

MiniCPM-V-2_6嵌入式AI应用实战&#xff1a;STM32F103C8T6边缘推理集成 最近几年&#xff0c;AI模型越来越“小”&#xff0c;开始往各种硬件设备里钻。你可能听说过在手机、树莓派上跑AI&#xff0c;但有没有想过&#xff0c;在一块只有指甲盖大小、主频72MHz、内存才20KB的S…...

Ostrakon-VL扫描终端部署:支持HTTPS与Basic Auth安全访问

Ostrakon-VL扫描终端部署&#xff1a;支持HTTPS与Basic Auth安全访问 1. 项目概述 Ostrakon-VL扫描终端是一款基于Ostrakon-VL-8B多模态大模型开发的Web交互应用&#xff0c;专为零售与餐饮行业场景优化设计。与传统工业级UI不同&#xff0c;该终端采用高饱和度的像素艺术风格…...

系统架构设计师常见高频考点总结之计算机网络

学习这些网络题目时&#xff0c;可以将网络层次结构想象成高速公路系统&#xff1a;核心层是连接城市的大型立交桥和主干道&#xff0c;追求极速转发&#xff1b;汇聚层是出口闸机&#xff0c;负责检查通行证&#xff08;安全过滤&#xff09;和分流&#xff1b;而接入层则是通…...

UDS诊断服务-10例程控制服务(0x31)实战:从协议解析到车辆传感器校准

1. 从车辆抖动问题认识0x31服务的重要性 去年夏天&#xff0c;我遇到一辆行驶里程8万公里的SUV&#xff0c;车主反映急加速时发动机抖动明显。用诊断仪读取故障码显示"P0172 - 燃油修正系统过浓"&#xff0c;但更换氧传感器和火花塞后问题依旧。这时候就需要请出我们…...