您的位置:首页 > 编程语言 > Java开发

利用MD5生成加密token-Java工具类(二)

2016-07-20 17:50 519 查看
最近负责接口开发,途中遇到加密token的环节,分享一下项目中生成加密token的方法

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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: