关于微信/支付宝等平台验签/签名sign生成算法

  • 引言

        我们在日常工作中经常会遇到对接微信平台、支付宝平台、或者自己对外开放一个api服务,那么这里经常会出现一个名字:sgin(签名)。

  • 举个栗子

        这是微信支付统一下单接口文档,最简单的理解就是,服务端为了安全考虑,要求客户端在请求时,将请求参数全部进行加密生成一个密文传过来,然后服务端在通过请求参数进行加密生成密文,比对这俩密文是否一样,如果一样说明本次请求是安全的。

  • 怎么弄

    POST    http://localhost:8985/open/api/addUser请求体(body):appid、name、age、gender、sign

        一般在对接这种平台,会提供接口地址、请求方式、请求参数、appid、appsecret。

        这两个最简单的理解就是appid代表你的名字,appsecret代表你的秘钥(这个打死也不能告诉别人)。

        一般文档会告诉你,先将所有参数按照ASCII码从小到大排序,中间key=value拼接,各个参数之间&拼接,然后再将秘钥拼接,最终采用MD5方式加密转大写就可以生成sign。

        直接上代码,我相信看完,应该也都懂了。

/*** 提前引入hutool-all包* * <dependency>*     <groupId>cn.hutool</groupId>*     <artifactId>hutool-all</artifactId>*     <version>5.4.4</version>*     <scope>compile</scope>* </dependency>* @param args*/public static void main(String[] args) {String appid = "wangzhen";String appsecret = "123456";//        创建加密参数,这里为什么采用TreeMap,是因为treemap是天然的ASCII排序的TreeMap treeMap = new TreeMap();treeMap.put("appid", appid);treeMap.put("name", "小明");treeMap.put("age", "17");treeMap.put("gender", "0");
//        拼接后的字符串StringBuilder sb = new StringBuilder();treeMap.forEach((k, v) -> {sb.append(k + "=" + v + "&");});
//        将秘钥拼接到尾部sb.append("appsecret=" + appsecret);
//        进行md5加密转大写String sign = SecureUtil.md5(sb.toString()).toUpperCase();System.out.println("sign:" + sign);
//        添加到请求体中treeMap.put("sign", sign);
//        请求接口String post = HttpUtil.post("http://localhost:8985/open/api/addUser", JSONUtil.toJsonStr(treeMap));System.out.println(post);}

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

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

相关文章

Unirest-Java:Java发起GET、POST、PUT、DELETE、文件上传,文件下载工具类介绍

一、简介 Unirest-Java是一个轻量级的HTTP客户端库&#xff0c;用于在Java应用程序中发送HTTP请求。 它提供了简单易用的API&#xff0c;可以方便地处理GET、POST、PUT、DELETE等HTTP方法。 Unirest-Java支持异步和同步请求&#xff0c;可以轻松地与JSON、XML等数据格式进行…

最优化方法复习——线性规划之对偶问题

一、线性规划对偶问题定义 原问题&#xff1a; 对偶问题&#xff1a; &#xff08;1&#xff09;若一个模型为目标求 “极大”&#xff0c;约束为“小于等于” 的不等式&#xff0c;则它的对偶模型为目标求“极小”&#xff0c;约束是“大于等于”的不等式。即“Max&#xff0…

2024年甘肃省职业院校技能大赛信息安全管理与评估三阶段理论样题一

2024年甘肃省职业院校技能大赛高职学生组电子与信息大类信息安全管理与评估赛项样题一 第六部分 理论技能与职业素养&#xff08;100 分&#xff09; 【注意事项】 1.该部分答题时长包含在第三阶段竞赛时长内&#xff0c;请在临近竞赛结束前提交。 2.参赛团队可根据自身情况…

数据库系统概论复习资料

数据库系统概论考试需知 一、分值分布 1、判断题&#xff08;10分&#xff09; 1分一个 2、填空题&#xff08;20分&#xff09; 2分一个 3、选择题&#xff08;20分&#xff09; 2分一个 4、分析题&#xff08;30分&#xff09; 第一题10分&#xff0c;第二题…

如何设置echart图表在vue页面屏幕比例缩放自适应问题

问题&#xff1a;页面的echart图表在浏览器缩放屏幕比例时无法随着屏幕的比例自动改变大小 解决方式&#xff1a; 可以通过监听窗口的 resize 事件&#xff0c;并在事件回调函数中重新调整图表的大小。 <template><div ref"chartContainer" style"w…

Enterprise Architect 12版本使用教程

Enterprise Architect 12版本使用教程 1.下载安装Enterprise Architect 122.Enterprise Architect原始DDL模板配置及存在的问题1.DDL Column Definition原始模板&#xff08;没有default值&#xff1a;可忽略&#xff09;2.DDL Data Type原始模板&#xff08;timestamp等时间字…

Apollo新版本Beta自动驾驶技术沙龙参会体验有感—百度自动驾驶开源框架

在繁忙的都市生活中&#xff0c;我们时常对未来的科技发展充满了好奇和期待。而近日&#xff0c;我有幸参加了一场引领科技潮流的线下技术沙龙&#xff0c;主题便是探索自动驾驶的魅力——一个让我们身临其境感受创新、了解技术巨擘的机会。 在12月2日我有幸参加了Apollo新版本…

智能优化算法应用:基于沙猫群算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于沙猫群算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于沙猫群算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.沙猫群算法4.实验参数设定5.算法结果6.参考文献7.…

kotlin协程反编译java学习原理

前情提要 GlobalScope.launch(Dispatchers.Main) { // 默认是Default异步 // 1.从当前协程体作用域Dispatchers.Main 协程依附的线程 到 挂起点 挂起函数 到 执行 请求耗时操作 而 切换到 IO异步线程 // 2.IO异步线程执行完成后&#xff0c;开始恢复&#xff0c;当前作…

modbus转profinet网关解决plc插槽号不够用的情况

PLC作为常用的控制设备之一&#xff0c;其插槽号有时会限制外部设备的连接数量。然而&#xff0c;通过使用modbus转profinet网关&#xff0c;可以解决这一问题。这种设备能够将modbus协议转换为profinet协议&#xff0c;实现PLC与更多外部设备的连接。 modbus转profinet网关还具…

游戏盾的防御原理以及为什么程序类型更适合接入游戏盾。

游戏盾是一种专门用于游戏服务器的安全防护服务&#xff0c;旨在抵御各种网络攻击。它的原理主要包括以下几个方面&#xff1a; 流量清洗和过滤&#xff1a;游戏盾会对进入游戏服务器的流量进行实时监测、分析和过滤。它通过识别恶意流量和攻击流量&#xff0c;过滤掉其中的攻击…

浏览器渲染页面的过程以及原理

什么是浏览器渲染 简单来说&#xff0c;就是将HTML字符串 —> 像素信息 渲染时间点 浏览器什么时候开始渲染&#xff1f; 网络线程发送请求&#xff0c;取回HTML封装为渲染任务并将其传递给渲染主线程的消息队列。 问题&#xff1a;只取回HTML吗&#xff1f;那CSS和JS呢&am…

面试经典150题(1-2)

leetcode 150道题 计划花两个月时候刷完&#xff0c;今天完成了两道(1-2)150&#xff1a; &#xff08;88. 合并两个有序数组&#xff09;题目描述&#xff1a; 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 n…

元宇宙vr党建云上实景展馆扩大党的影响力

随着科技的飞速发展&#xff0c;VR虚拟现实技术已经逐渐融入我们的日常生活&#xff0c;尤其在党建领域&#xff0c;VR数字党建展馆更是成为引领红色教育新风尚的重要载体。今天&#xff0c;就让我们一起探讨VR数字党建展馆如何提供沉浸式体验&#xff0c;助力党建工作创新升级…

十年OpenCV开发以后发布的作品 - OpenCV实验大师

OpenCV介绍 OpenCV是知名的计算机视觉框架&#xff0c;支持数十个不同的视觉处理模块&#xff0c;提供了超过2000多个传统算法&#xff0c;其核心功能支持图像处理、图像分析、特征提取、对象检测、深度学习模型推理等。当前支持C、Python、JS、C#等多种语言SDK&#xff0c;支…

智能优化算法应用:基于袋獾算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于袋獾算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于袋獾算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.袋獾算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

雷达点云数据.pcd格式转.bin格式

雷达点云数据.pcd格式转.bin格式 注意&#xff0c;方法1原则上可行&#xff0c;但是本人没整好pypcd的环境 方法2是绝对可以的。 方法1 1 源码如下&#xff1a; def pcb2bin1(): # save as bin formatimport os# import pypcdfrom pypcd import pypcdimport numpy as np…

python pandas dataframe常用数据处理总结

最近一直在做数据处理相关的工作&#xff0c;有几点经常遇到的情况总结如下&#xff1a; 数据中存在为空数据如何处理 处理方式1&#xff1a;丢弃数据行 # 实现方式1 data data.dropna(subset[id]) # 若id列中某行数值为空&#xff0c;丢弃整行数据 # 实现方式2 data df[df…

Ant Design Vue 年选择器

文章目录 参考文档效果展示实现过程 参考文档 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; DatePicker 日期选择框 大佬&#xff1a;搬砖小匠&#xff08;Ant Design vue 只选择年&#xff09; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案…

光标虽小,但是能让其凭空消失的原因不少,需要仔细检查

在Windows 10中遇到鼠标光标有问题吗?我们已经为你提供了所需的修复程序。 光标消失的原因 光标不断消失可能是由各种原因引起的,因此有可能找到各种各样的解决方案。光标可能根本无法工作,或者在特定情况下可能会消失。鼠标按钮甚至可能在光标隐藏时工作。 以下是用户注…