利用MD5生成加密token-Java工具类(二)
2016-07-20 17:50
519 查看
最近负责接口开发,途中遇到加密token的环节,分享一下项目中生成加密token的方法
token生成要求
string1,+string2+string3....若干字符串按照key值字典排序后进行md5加密
核心代码如下:
token生成要求
string1,+string2+string3....若干字符串按照key值字典排序后进行md5加密
核心代码如下:
public class MD5Util { private static final String encryModel="MD5"; /** * 32λmd5. * 32位小写md5加密 * @param str * @return */ public static String md5(String str) { return encrypt(encryModel, str); } public static String encrypt(String algorithm, String str) { try { MessageDigest md = MessageDigest.getInstance(algorithm); md.update(str.getBytes()); StringBuffer sb = new StringBuffer(); byte[] bytes = md.digest(); for (int i = 0; i < bytes.length; i++) { int b = bytes[i] & 0xFF; if (b < 0x10) { sb.append('0'); } sb.append(Integer.toHexString(b)); } return sb.toString(); } catch (Exception e) { return ""; } } }
public class SecurityUtil { /** * * @Description : 身份验证token值算法: * 算法是:将特定的某几个参数一map的数据结构传入, * 进行字典序排序以后进行md5加密,32位小写加密; * @Method_Name : authentication * @param token 请求传过来的token * @param srcData 约定用来计算token的参数 * @return */ public static String authentication(Map<String , Object > srcData) throws PharosException{ //排序,根据keyde 字典序排序 if(null == srcData){ throw new PharosException("传入参数为空"); } List<Map.Entry<String,Object>> list = new ArrayList<Map.Entry<String,Object>>(srcData.entrySet()); Collections.sort(list, new Comparator<Map.Entry<String, Object>>(){ //升序排序 public int compare(Entry<String,Object> o1, Entry<String,Object> o2){ return o1.getKey().compareTo(o2.getKey()); } }); StringBuffer srcSb = new StringBuffer(); for(Map.Entry<String , Object>srcAtom : list){ srcSb.append(String.valueOf(srcAtom.getValue())); } System.out.println("身份验证加密前字符串:"+srcSb.toString()); //计算token String token = MD5Util.md5(srcSb.toString()); // System.out.println(cToken);//for test return token; } }
相关文章推荐
- Java 多线程:ThreadLocal关键字
- Spring3.0 JPA(hibernate3.6实现)整合问题之:java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUni
- Java 多线程:volatile关键字
- Java 多线程:synchronized 关键字用法
- 如何终止java线程
- Java 多线程:Condition关键字
- SpringMVC框架01-SpringMVC原理
- Java 多线程:Lock接口
- Java 多线程:生产者消费者问题
- Java 多线程:多线程生成的原因z
- 如何以Java实现网页截图技术
- java学习之布局管理器
- jenkins报错:java.lang.illegalstateexception already existed will not overwrite with
- Java中JDK,JRE,JVM的区别
- Spring中代码实现读取properties值
- java中JVM的原理
- JAVA之J2EE学习路线
- spring的2种配置文件applicationContext.xml和xxx-servlet.xml
- java集合详解2
- missing artifact jdk.tools:jar:1.6