application/x-www-form-urlencoded 所有参数排序以及参数自动添加sign签名工具类

本文主要是介绍application/x-www-form-urlencoded 所有参数排序以及参数自动添加sign签名工具类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

import java.math.BigInteger;
import java.nio.charset.Charset;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.*;/*** @program: outsys-adapter* @description: 所有参数排序以及参数自动添加sign签名* @author: ShiHuaHao* @create: 2019-06-28 09:40**/
public class ParamUtil {/*** 所有参数排序以及参数自动添加sign签名* @param param* @return*/public static String getParam4Url(String param) throws NoSuchAlgorithmException {// 将参数按字母排序String[] parameters = param.split("&");TreeMap SortedParametersWithoutSign = new TreeMap();for (int i = 0; i < parameters.length; i++) {String[] pandvalue = parameters[i].split("=");if (pandvalue.length > 1) {String[] values = Arrays.copyOfRange(pandvalue, 1, pandvalue.length);if (!values[0].equals(""))SortedParametersWithoutSign.put(pandvalue[0], values[0]);}}String requestParameters = "";Set set = SortedParametersWithoutSign.entrySet();Iterator iterator = set.iterator();int iterationcount = 0;while(iterator.hasNext()) {Map.Entry mentry = (Map.Entry)iterator.next();if(iterationcount == 0)requestParameters += mentry.getKey()+"="+mentry.getValue();else requestParameters += "&"+mentry.getKey()+"="+mentry.getValue();iterationcount++;}// 将组装的参数 得到md5 散列串MessageDigest md = MessageDigest.getInstance("MD5");byte[] messageDigest = md.digest(requestParameters.getBytes(Charset.forName("UTF-8")));BigInteger number = new BigInteger(1, messageDigest);String hashtext = number.toString(16);// Now we need to zero pad it if you actually want the full 32 chars.while (hashtext.length() < 32) {hashtext = "0" + hashtext;}// 加入sign的参数,重新生成 请求的参数。SortedParametersWithoutSign.put("sign",hashtext);// 重新拿到最新的请求数据requestParameters = "";set = SortedParametersWithoutSign.entrySet();iterator = set.iterator();iterationcount = 0;while(iterator.hasNext()) {Map.Entry mentry = (Map.Entry)iterator.next();if(iterationcount == 0)requestParameters += mentry.getKey()+"="+mentry.getValue();else requestParameters += "&"+mentry.getKey()+"="+mentry.getValue();iterationcount++;}return requestParameters;}}

主要参考:链接

这篇关于application/x-www-form-urlencoded 所有参数排序以及参数自动添加sign签名工具类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/451641

相关文章

解读docker运行时-itd参数是什么意思

《解读docker运行时-itd参数是什么意思》在Docker中,-itd参数组合用于在后台运行一个交互式容器,同时保持标准输入和分配伪终端,这种方式适合需要在后台运行容器并保持交互能力的场景... 目录docker运行时-itd参数是什么意思1. -i(或 --interactive)2. -t(或 --

nginx生成自签名SSL证书配置HTTPS的实现

《nginx生成自签名SSL证书配置HTTPS的实现》本文主要介绍在Nginx中生成自签名SSL证书并配置HTTPS,包括安装Nginx、创建证书、配置证书以及测试访问,具有一定的参考价值,感兴趣的可... 目录一、安装nginx二、创建证书三、配置证书并验证四、测试一、安装nginxnginx必须有"-

Java中有什么工具可以进行代码反编译详解

《Java中有什么工具可以进行代码反编译详解》:本文主要介绍Java中有什么工具可以进行代码反编译的相关资,料,包括JD-GUI、CFR、Procyon、Fernflower、Javap、Byte... 目录1.JD-GUI2.CFR3.Procyon Decompiler4.Fernflower5.Jav

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

Docker部署Jenkins持续集成(CI)工具的实现

《Docker部署Jenkins持续集成(CI)工具的实现》Jenkins是一个流行的开源自动化工具,广泛应用于持续集成(CI)和持续交付(CD)的环境中,本文介绍了使用Docker部署Jenkins... 目录前言一、准备工作二、设置变量和目录结构三、配置 docker 权限和网络四、启动 Jenkins

MobaXterm远程登录工具功能与应用小结

《MobaXterm远程登录工具功能与应用小结》MobaXterm是一款功能强大的远程终端软件,主要支持SSH登录,拥有多种远程协议,实现跨平台访问,它包括多会话管理、本地命令行执行、图形化界面集成和... 目录1. 远程终端软件概述1.1 远程终端软件的定义与用途1.2 远程终端软件的关键特性2. 支持的

Java中实现订单超时自动取消功能(最新推荐)

《Java中实现订单超时自动取消功能(最新推荐)》本文介绍了Java中实现订单超时自动取消功能的几种方法,包括定时任务、JDK延迟队列、Redis过期监听、Redisson分布式延迟队列、Rocket... 目录1、定时任务2、JDK延迟队列 DelayQueue(1)定义实现Delayed接口的实体类 (

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri