这两天新调个接口的时候,一直提示签名错误,但所需的时间,工号,token都是对的,完全没有头绪,卡了两天后,终于找到原因了

原因是我的校验信息,是要将时间,工号,token封装在一起成字符串,然后用md5加密后传过去,之前封装时一直用的map,而map是无序的,转换成字符串时顺序不定,而后再用md5加密出来的字符串,跟所需字符串就不一样了

详看代码:

package main

import (
"crypto/md5"
"encoding/hex"
"encoding/json"
"fmt"
"time"
) // 签名信息
type signa struct {
ThirdTime int `json:"thirdTime"`
ThirdCaller string `json:"thirdCaller"`
ThirdToken string `json:"thirdToken"`
} func main() {
//校验信息
m := map[string]interface{}{
"thirdTime": int(time.Now().Unix() * 1000),
"thirdCaller": "W9010315",
"thirdToken": "55sfew4sfsf5rerx8sfwxs5",
}
signJson, _ := json.Marshal(m)
fmt.Println(string(signJson))
// 计算MD5值
md55 := md5.Sum(signJson)
thirdSign := hex.EncodeToString(md55[:])
fmt.Println(thirdSign) fmt.Println("########################") signs := signa{
ThirdTime: int(time.Now().Unix() * 1000),
ThirdCaller: "W9010315",
ThirdToken: "55sfew4sfsf5rerx8sfwxs5",
}
//用MD5加密签名信息
signJsons, _ := json.Marshal(signs)
fmt.Println(string(signJsons))
// 计算MD5值
md555 := md5.Sum(signJsons)
thirdSigns := hex.EncodeToString(md555[:])
fmt.Println(thirdSigns)
}

输出结果如下,校验信息所需的字符串是0322那个,跟我用map加密出来的字符串完全不一样

{"thirdCaller":"W9010315","thirdTime":1701336910000,"thirdToken":"55sfew4sfsf5rerx8sfwxs5"}
92ef16ab18a81d0333dee9f01e456a05
########################
{"thirdTime":1701336910000,"thirdCaller":"W9010315","thirdToken":"55sfew4sfsf5rerx8sfwxs5"}
032225f312a4b6200df96bd8d2b41ee4

Go--记录下踩map的坑的更多相关文章

  1. wrk 使用记录及踩过的坑

    wrk是什么?https://github.com/wg/wrk wrk 是一个非常小巧高效的开源性能测试工具,支持lua脚本来创建复杂的测试场景.wrk 的一个很好的特性就是能用很少的线程压出很大的 ...

  2. HashMap在并发场景下踩过的坑

    本文来自网易云社区 作者:张伟 关于HashMap在并发场景下的问题有很多人,很多公司遇到过!也很多人总结过,我们很多时候都认为这样都坑距离自己很远,自己一定不会掉入这样都坑.可是我们随时都有就遇到了 ...

  3. 记录Appium-desktop踩过的坑could not find devices

    最近了解到一个自动化入门的新工具appium-desktop,看网上各种文章,感觉这个工具是很简单的一个入门级工具,下载试用了一下. 官网下载,输入网址appium.io,点击下载. 一路傻瓜式安装, ...

  4. 那些年 IE 下踩过的坑

    1年过去了,换了一个不用兼容IE8一下浏览器的工作了! 1.:before,:after(伪类) 所有主流浏览器都支持 :before 选择器. 注释:对于 IE8 及更早版本中的 :before,必 ...

  5. nrf52832蓝牙开发踩过的坑

    接触nrf52832芯片已经有一段时间了,记录我踩过的坑.这些坑大多都补回来了,愿后来的开发者没有坑~ 先来点开胃小菜 一.环境问题 安装离线包遇到的错误--svdconv exited with a ...

  6. Pro Flight YOKE 设备键位映射踩过的坑

    背景 VR游戏项目.街机游戏项目7月阶段版本快要结束了,考虑到带有键鼠外设显得逼格比较Low,所以决定采用"高大上"的专业设备来进行游戏操作. 需求 需要将键盘鼠标操作的18个键位 ...

  7. 使用pace监控ajax踩过的坑

    使用vue.js开发移动端的活动页面时,有时候会出现因为请求的数据没有返回而使得当前活动页结构混乱或者不美观,这个时候可以考虑使用pace.js,通过设置参数值,在ajax全部请求结束之前显示load ...

  8. 开发基于vue前端框架下的系统的UI自动化,记录总结踩的坑

    在使用了pytest完成了一个系统的UI自动化后,因为系统的前端框架,是 基于VUE写的,这就让我编写脚本的时候踩了些坑. 无法用JS 修改标签属性,从而进行的操作 比如上传图片,我们的上传是这样子的 ...

  9. UWP:记录一下这几天踩到的坑

    最近在玩微软的Desktop Bridge项目,遇到了如下几个坑: 1.文档中给的是js项目魔改的方法,其实C#项目也可以魔改加入UWP部分的,区别在于: 不用在项目文件里写<AppxGener ...

  10. windows下mysql免安装版配置(踩过的坑)简记

    下载 从官网(https://dev.mysql.com/downloads/mysql/)下载 这里的免安装版本的,相对来说干净,但是需要自己来配置很多东西. 配置 首先是注册windows的服务. ...

随机推荐

  1. 动态规划——提高Ⅴ(DP优化)

    单调队列优化DP 其实单调队列就是一种队列内的元素有单调性(单调递增或者单调递减)的队列,答案(也就是最优解)就存在队首,而队尾则是最后进队的元素.因为其单调性所以经常会被用来维护区间最值或者降低DP ...

  2. JAVAweek6

    本周学习 Java语言基础:运算符[有所区别] 算术运算符 +(3+2) - * / %(取余,模运算) +(连接符)(3+''2'') ++ -- class VarDemo { //算术运算符 p ...

  3. [ABC262B] Triangle (Easier)

    Problem Statement You are given a simple undirected graph with $N$ vertices and $M$ edges. The verti ...

  4. AI浪潮下,大模型如何在音视频领域运用与实践?

    视频云大模型算法「方法论」. 刘国栋|演讲者 在AI技术发展如火如荼的当下,大模型的运用与实践在各行各业以千姿百态的形式展开.音视频技术在多场景.多行业的应用中,对于智能化和效果性能的体验优化有较为极 ...

  5. 欧奈尔的RPS指标如何使用到股票预测

    前言 1988年,欧奈尔将他的投资理念写成了<笑傲股市How to Make Money in Stocks>.书中总结了选股模式CANSLIM模型,每一个字母都代表一种尚未发动大涨势的潜 ...

  6. Feign源码解析:初始化过程(二)

    背景 上一篇介绍了Feign源码初始化的一部分,内容主要是,@EnableFeignClients.@FeignClient这些注解,都支持设置一些自定义的配置类: A custom @Configu ...

  7. 安装华企盾DSC防泄密软件:编辑文件不加密常见问题,运维工程师必看

    1.先查看客户端日志主进程是否是加密进程.日志中是不是勾选智能半透明.加密类型是否有添加 2.用procmon监控保存的文件找出writefile的进程是否有添加,进程树是否有父进程,加密类型是否正确 ...

  8. 华企盾DSC邮件白名单问题常见处理方法

    1.先检查邮件白名单服务器配置测试连接的通(不通可能是协议未开或者账号密码错误) 2.检查邮件发送端口是否配置(常见的有25和s465.s587) 3.邮件是否到发件箱或者收件箱的垃圾邮件里面了 4. ...

  9. vscode快速配置汇编环境

    微机原理的课程需要,简单快速记录环境的搭建 找到并安装插件masm. MASM/TASM的汇编工具默认是tasm这样就无法在vscode终端进行debug,打开插件设置如下修改: 测试代码实现小写字母 ...

  10. 在Linux上部署.net Core 步骤以及遇到的一些问题

    Linux安装部署手册 一.安装.NET Core SDK centos 7 系统命令为: sudo rpm -Uvh https://packages.microsoft.com/config/ce ...