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;
        }
    }
}
时间: 2024-10-11 17:22:56

SHA1签名工具类java的相关文章

java版MD5签名工具类

package com.net.util; import java.security.MessageDigest; /** * MD5签名工具类 * @author zhangdi * */ public class MD5Util { private static String byteArrayToHexString(byte b[]) { StringBuffer resultSb = new StringBuffer(); for (int i = 0; i < b.length; i+

加密解密工具类(Java,DES)

一个Java版的DES加密工具类,可以用来进行网络数据传输加密,保存密码的时候进行加密. import java.security.Key; import java.security.spec.AlgorithmParameterSpec; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.I

接口签名工具类

1 import com.alibaba.fastjson.JSON; 2 import com.alibaba.fastjson.serializer.SerializerFeature; 3 import org.springframework.util.StringUtils; 4 5 import java.security.MessageDigest; 6 import java.util.HashMap; 7 import java.util.Map; 8 9 /** 10 * 签名

二维码生成工具类java版

注意:这里我不提供所需jar包的路径,我会把所有引用的jar包显示出来,大家自行Google package com.net.util; import java.awt.BasicStroke; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Shape; import java.awt.geom.RoundRectangle2D; import java.a

判空工具类——Java

代码 import java.util.Collection; /** * 判空工具类 */ public class EmptyUtil { /** * 判断字符串是否为空,长度为0被认为是空字符串. * * @param str * @return */ public static boolean isEmpty(String str) { if (str != null) { return str.trim().length() == 0; } else { return true; }

java工具类——java将一串数据按照gzip方式压缩和解压缩

我要整理在工作中用到的工具类分享出来,也方便自己以后查阅使用,这些工具类都是我自己实际工作中使用的 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.RandomAccessFile; import java.nio

java8--IO工具类(java疯狂讲义3复习笔记)

Paths类 public static void pathTest(){ Path path = Paths.get("~"); System.out.println(path); System.out.println(path.getNameCount()); System.out.println(path.getRoot()); Path absolutePath = path.toAbsolutePath(); System.out.println(absolutePath);

同步工具类 java.util.concurrent.CountDownLatch

1.类介绍 java.util.concurrent.CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 用给定的计数 初始化 CountDownLatch.由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞.之后,会释放所有等待的线程,await 的所有后续调用都将立即返回.这种现象只出现一次--计数无法被重置.如果需要重置计数,请考虑使用 CyclicBarrier. 2.使用场景

Java页面静态化工具类.java

package com.qq.utils; import java.io.File; import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclie