關于微信/支付寶等平臺驗簽/簽名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.pswp.cn/news/207083.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/207083.shtml
英文地址,請注明出處:http://en.pswp.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中遇到鼠標光標有問題嗎?我們已經為你提供了所需的修復程序。 光標消失的原因 光標不斷消失可能是由各種原因引起的,因此有可能找到各種各樣的解決方案。光標可能根本無法工作,或者在特定情況下可能會消失。鼠標按鈕甚至可能在光標隱藏時工作。 以下是用戶注…