sha1工具类
2016-01-18 19:16
483 查看
这边分享一个微信公众号开发经常要用到的sha1加密,直接分享一个加密类的代码,调用里面的方法传入一个字符串就能得到加密后的串。其中的SortedMap已经帮我们自动排序,做微信公众号的同学知道需要把一些字段排序完在进行sha1加密,所以这个工具类还是蛮方便的。
sha1加密的代码如下:
这个工具类可以说是为微信公众号开发的工具类,当然也是可以单独为sha1的加密工具。
sha1加密的代码如下:
package com.utils; /** * 2016年1月18日 * Chatpay * */ import java.net.URLDecoder; 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("&")); 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; } } }
这个工具类可以说是为微信公众号开发的工具类,当然也是可以单独为sha1的加密工具。
相关文章推荐
- 浅谈C#中Md5和Sha1两种加密方式
- JavaScript SHA1加密算法实现详细代码
- javascript实现base64 md5 sha1 密码加密
- 微信JSSDK开发
- jQuery.body系列之一,基于jQuery的加密集合插件
- Django 加密模块的应用
- SHA1算法C语言实现
- iOS基于Objective-c的MD5/SHA1加密算法的实现
- hashlib简介
- python文件查重工具,基于文件大小和md5/sha1值
- commons-codec 加密(MD5 SHA1 BASE64)
- Baidu Map SDK 地图显示不出来的原因
- 微软将停止接受用于SSL和代码签名的SHA1证书
- google map api key申请
- HMAC-SHA1各语言版本实现
- JAVA计算文件的MD5及SHA1等值
- crc32(),md5(),sha1()函数的简要理解与分析
- 百度地图需要SHA1。
- 文件校验码
- 获取android APP 签名的MD5和SHA1