• SHA1签名工具类java


    package com.net.util;
    
    import java.security.MessageDigest;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Random;
    import java.util.Set;
    import java.util.SortedMap;
    
    /*
    '============================================================================
    'api说明:
    'createSHA1Sign创建签名SHA1
    'getSha1()Sha1签名
    '============================================================================
    '*/
    public class Sha1Util {
    
        public static String getNonceStr() {
            Random random = new Random();
            return MD5Util.MD5Encode(String.valueOf(random.nextInt(10000)), "UTF-8");
        }
        public static String getTimeStamp() {
            return String.valueOf(System.currentTimeMillis() / 1000);
        }
        
       //创建签名SHA1
        public static String createSHA1Sign(SortedMap<String, String> signParams) throws Exception {
            StringBuffer sb = new StringBuffer();
            Set es = signParams.entrySet();
            Iterator it = es.iterator();
            while (it.hasNext()) {
                Map.Entry entry = (Map.Entry) it.next();
                String k = (String) entry.getKey();
                String v = (String) entry.getValue();
                sb.append(k + "=" + v + "&");
                //要采用URLENCODER的原始值!
            }
            String params = sb.substring(0, sb.lastIndexOf("&"));
    //        System.out.println("sha1之前:" + params);
    //        System.out.println("SHA1签名为:"+getSha1(params));
            return getSha1(params);
        }
        //Sha1签名
        public static String getSha1(String str) {
            if (str == null || str.length() == 0) {
                return null;
            }
            char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                    'a', 'b', 'c', 'd', 'e', 'f' };
    
            try {
                MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
                mdTemp.update(str.getBytes("UTF-8"));
    
                byte[] md = mdTemp.digest();
                int j = md.length;
                char buf[] = new char[j * 2];
                int k = 0;
                for (int i = 0; i < j; i++) {
                    byte byte0 = md[i];
                    buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
                    buf[k++] = hexDigits[byte0 & 0xf];
                }
                return new String(buf);
            } catch (Exception e) {
                return null;
            }
        }
    }
  • 相关阅读:
    zookeeper与activemq最新存储replicatedLevelDB整合
    MySQL分表的3种方法
    mycat 从入门到放弃 (转)
    centos 7 忘记密码
    java内存溢出的情况解决方法
    跨域问题的产生及解决方法
    一次jvm调优过程
    2019年总结
    Jenkinsfile与Json的转换
    DevOps平台
  • 原文地址:https://www.cnblogs.com/zhangdiIT/p/6748959.html
Copyright © 2020-2023  润新知