首页 > 编程语言 >JAVA 接口签名sign生成 工具类

JAVA 接口签名sign生成 工具类

时间:2022-11-07 19:38:42浏览次数:39  
标签:JAVA String privateKey 接口 sign util import public append


import org.springframework.util.StringUtils;

import java.util.Map;
import java.util.Random;
import java.util.TreeMap;

/**
* @Author: JCccc
* @CreateTime: 2018-10-30
* @Description:
*/
public class SignUtils {



public String getTimestamp() {
//生成时间戳

long timestampLong =System.currentTimeMillis();

String timestampStr = String.valueOf(timestampLong);

return timestampStr;
}



public String getNonceStr(int length){

//生成随机字符串

String str="zxcvbnmlkjhgfdsaqwertyuiopQWERTYUIOPASDFGHJKLZXCVBNM1234567890";

Random random=new Random();

StringBuffer randomStr=new StringBuffer();

// 设置生成字符串的长度,用于循环

for(int i=0; i<length; ++i){
//从62个的数字或字母中选择

int number=random.nextInt(62);

//将产生的数字通过length次承载到sb中

randomStr.append(str.charAt(number));
}

//将承载的字符转换成字符串

return randomStr.toString();
}


//类似微信接口的签名生成方法
public String createSign(Map<String, String> params, String privateKey){
StringBuilder sb = new StringBuilder();
// 将参数以参数名的字典升序排序
Map<String, String> sortParams = new TreeMap<String, String>(params);
// 遍历排序的字典,并拼接"key=value"格式
for (Map.Entry<String, String> entry : sortParams.entrySet()) {
String key = entry.getKey();
String value = entry.getValue().trim();
if (!StringUtils.isEmpty(value))
sb.append("&").append(key).append("=").append(value);
}
String stringA = sb.toString().replaceFirst("&","");
String privateKey="WHJBK24NXCX"; //私钥最后放在配置文件里面读取
String stringSignTemp = stringA + "&"+"appkey="+privateKey;
//将签名使用MD5加密并全部字母变为大写
String signValue = Md5Encrypt.md5(stringSignTemp).toUpperCase();
System.out.println("stringA+privateKey后MD5加密+转换全部大写生成sign为: "+signValue);
return signValue;
}


}

标签:JAVA,String,privateKey,接口,sign,util,import,public,append
From: https://blog.51cto.com/u_15753094/5831052

相关文章

  • Java-SSRF
    漏洞分析原理:服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。大部分的web服务器架构中,web服务器自身都可以访问互联网和服务器所在的内网......
  • JavaScript之数组高阶API—reduce()
    一文搞懂JavaScript数组中最难的数组API——reduce()前面我们讲了数组的一些基本方法,今天给大家讲一下数组的reduce(),它是数组里面非常重要也是比较难的函数,那么这篇文章......
  • JAVA MD5加密工具类
     importjava.io.UnsupportedEncodingException;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;/***@Author:JCccc*@CreateTim......
  • JAVA 责任链设计模式
    这次介绍责任链模式,采用最普遍的请假例子来编码实现。先给列出个模拟的需求,一个人请假,调用一个接口,传入的参数是他请假的天数。然后,请假的天数---->如果小于2天,由直属领导......
  • JAVA回调函数简单讲解 CallBack
    回调,其实就是有个回应的那种感觉。那么,接下来,我们就用消息推送的场景,简简单单地讲解下回调函数的使用。直接看代码,先创建一个回调接口,MessageCallBack/***@Author:JCccc......
  • Java-xss
    XSS代码分析在php里面会使用echo对用户输入的参数进行直接输出,导致了xss漏洞的产生。而在Java里面会将接收到的未经过滤的参数共享到request域中,在jsp的页面里面使用EL表......
  • 3183-2020-Java-国赛-4-3
    看题看半天看不懂,原来它这个包装数量是指能装的商品数量啊,这个价格指的不是单个包装的价格,而是包装里包含商品的总价10080200150意思是,第一种200元100个商品、第二......
  • 路飞搜索功能接口和前端搜索页面搭建
    补充重要//this.$route.query是从?后面取值//this.$route.params是从路径中取值搜索接口设计views.py按课程名字搜索#按名字搜索接口设计classCo......
  • 方法重载,可变参数,作用域,构造器,this---JAVA
    一、方法重载(1)方法名:必须相同;(2)参数列表:必须不同(参数类型或个数或顺序,至少有一样不同,参数名无要求)(3)返回类型:无要求publicclassvar{publicstaticvoidmain(String[......
  • luffy创建数据库以及接口
    1创建Banner数据库由于此数据库中的时间,删除等可以共用,所以我们可以给他单独写一个表模型,最后使它不要在建数据库的时候给建到数据库里面,此段代码可共用,接下来我们继承Bas......