接口签名:参数名按ASCII码从小到大排序+Key+MD5+转大写签名

简介: 接口签名:参数名按ASCII码从小到大排序+Key+MD5+转大写签名
/*** sign 签名 (参数名按ASCII码从小到大排序(字典序)+key+MD5+转大写签名)* key 由供应商提供* @return*/publicstaticStringgetSign(Mapmap, StringappSecret) throwsNoSuchAlgorithmException {
StringBuffersignOri=newStringBuffer();
// entrySet 所有参与传参的参数按照accsii排序(升序)Setset=map.entrySet();
Iteratorit=set .iterator();
while (it.hasNext()) {
Map.Entryentry= (Map.Entry) it.next();
Stringk= (String) entry.getKey();
Objectv=entry.getValue();
//空值不传递,不参与签名组串if (null!=v&&!"".equals(v)) {
signOri.append(k+"="+v+"&");
            }
        }
signOri=signOri.append("appSecret="+appSecret);
System.out.println(signOri);
//MD5加密,结果转换为大写字符Stringsign=encodeByMD5(signOri.toString()).toUpperCase();
returnsign;
    }
publicstaticStringencodeByMD5(Stringstr) throwsNoSuchAlgorithmException {
MessageDigestmd=MessageDigest.getInstance("MD5");
// 计算消息的摘要byte[] digest=md.digest(str.getBytes());
// 将摘要转换为十六进制字符串StringhexString=bytesToHex(digest);
returnhexString;
    }
publicstaticStringbytesToHex(byte[] bytes) {
StringBuilderhexString=newStringBuilder();
for (byteb : bytes) {
Stringhex=Integer.toHexString(0xff&b);
if (hex.length() ==1) {
hexString.append('0');
            }
hexString.append(hex);
        }
returnhexString.toString();
    }


目录
相关文章
|
测试技术 PHP 数据库
ThinkPHP6.0使用PHPUnit进行单元测试
ThinkPHP6.0使用PHPUnit进行单元测试
1189 0
ThinkPHP6.0使用PHPUnit进行单元测试
|
人工智能 Java API
MCP客户端调用看这一篇就够了(Java版)
本文详细介绍了MCP(Model Context Protocol)客户端的开发方法,包括在没有MCP时的痛点、MCP的作用以及如何通过Spring-AI框架和原生SDK调用MCP服务。文章首先分析了MCP协议的必要性,接着分别讲解了Spring-AI框架和自研SDK的使用方式,涵盖配置LLM接口、工具注入、动态封装工具等步骤,并提供了代码示例。此外,还记录了开发过程中遇到的问题及解决办法,如版本冲突、服务连接超时等。最后,文章探讨了框架与原生SDK的选择,认为框架适合快速构建应用,而原生SDK更适合平台级开发,强调了两者结合使用的价值。
14157 33
MCP客户端调用看这一篇就够了(Java版)
|
8月前
|
运维 负载均衡 安全
别再混为一谈了!一文读懂内网穿透的三大技术:VPN、反向代理与零信任
总而言之,三者并非简单的替代关系,而是演进与互补。理解其核心差异,才能为企业构建起既高效又安全的远程访问体系。
|
10月前
|
存储 搜索推荐 算法
加密算法、排序算法、字符串处理及搜索算法详解
本文涵盖四大类核心技术知识。加密算法部分介绍了对称加密(如 AES)、非对称加密(如 RSA)、哈希摘要(如 SHA-2)、签名算法的特点及密码存储方案(加盐、BCrypt 等)。 排序算法部分分类讲解了比较排序(冒泡、选择、插入、归并、快排、堆排序)和非比较排序(计数、桶、基数排序)的时间复杂度、适用场景及实现思路,强调混合排序的工业应用。 字符串处理部分包括字符串反转的双指针法,及项目中用正则进行表单校验、网页爬取、日志处理的实例。 搜索算法部分详解了二分查找的实现(双指针与中间索引计算)和回溯算法的概念(递归 + 剪枝),以 N 皇后问题为例说明回溯应用。内容全面覆盖算法原理与实践
296 0
|
机器人 Android开发 数据安全/隐私保护
Android App 导出APK安装包以及制作App图标讲解及实战(图文解释 简单易懂)
Android App 导出APK安装包以及制作App图标讲解及实战(图文解释 简单易懂)
4295 0
|
JavaScript 数据安全/隐私保护
JS逆向之webpack 通用扣取思路
JS逆向之webpack 通用扣取思路
2387 0
JS逆向之webpack 通用扣取思路
|
SQL XML Java
Javaweb之Mybatis的动态SQLforeach和include的详细解析
Javaweb之Mybatis的动态SQLforeach和include的详细解析
364 0
|
SQL Java 数据库
【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)(下)
【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)(下)
822 0
|
XML 监控 前端开发
详解Spring、SpringBoot、SpringCloud三者的联系与区别
详解Spring、SpringBoot、SpringCloud三者的联系与区别
4890 1