sha1签名 java_SHA1签名工具类

packagerichinfo.attendance.util;importjava.security.MessageDigest;importjava.util.Iterator;importjava.util.Map;importjava.util.Map.Entry;importjava.util.Random;importjava.util.Set;importjava.util.SortedMap;importjava.util.TreeMap;public classSignatureUtil {public static final String TOKEN = "3ad8id23i907o2kmli03";//用于生成数字签名

/*** 创建SHA1签名

*@paramparams

*@returnSHA1签名*/

public static String createSignature(SortedMapparams) {returnsha1Encrypt(sortParams(params));

}/*** 创建SHA1签名

*@paramtimeStamp

*@paramnonce

*@returnSHA1签名*/

public staticString createSignature(String timeStamp, String nonce) {

SortedMap signParams = new TreeMap();

signParams.put("token", TOKEN);

signParams.put("timeStamp", timeStamp);

signParams.put("nonce", nonce);returncreateSignature(signParams);

}/*** 使用SHA1算法对字符串进行加密

*@paramstr

*@return

*/

public staticString sha1Encrypt(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 newString(buf);

}catch(Exception e) {return null;

}

}/*** 生成时间戳

*@return

*/

public staticString getTimeStamp() {return String.valueOf(System.currentTimeMillis() / 1000);

}/*** 生成6位随机字符串

*@return

*/

public staticString getRandomStr() {int length = 6;

String base= "abcdefghijklmnopqrstuvwxyz0123456789";

Random random= newRandom();

StringBuffer sb= newStringBuffer();for (int i = 0; i < length; i++) {int number =random.nextInt(base.length());

sb.append(base.charAt(number));

}returnsb.toString();

}/*** 根据参数名称对参数进行字典排序

*@paramparams

*@return

*/

private static String sortParams(SortedMapparams) {

StringBuffer sb= newStringBuffer();

Set> es =params.entrySet();

Iterator> it =es.iterator();while(it.hasNext()) {

Map.Entry entry =it.next();

String k=entry.getKey();

String v=entry.getValue();

sb.append(k+ "=" + v + "&");

}return sb.substring(0, sb.lastIndexOf("&"));

}public static void main(String[] args) throwsException {//c4db7f5867a6290378cf24429f2803da0516a788

String timeStamp =getTimeStamp();

String nonce=getRandomStr();

String sign=createSignature(timeStamp, nonce);

System.out.println("timeStamp:"+timeStamp);

System.out.println("nonce:"+nonce);

System.out.println("signature:" +sign);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值