MD5加密是现在比较流行的加密方法,下面介绍一下MD5对map的key值字典排序加密
key值字典排序
/**
* 使用 Map按key进行排序
* @param map
* @return
*/
public static Map<String, Object> sortMapByKey(Map<String, Object> map) {
if (map == null || map.isEmpty()) {
return null;
}
Map<String, Object> sortMap = new TreeMap<String, Object>(
new MapKeyComparator());
sortMap.putAll(map);
return sortMap;
}
Map<String, Object>map=new HashMap<String,Object>();
map.put("name", "harry");
map.put("level", "top");
map.put("alary", 1000);
System.out.println("排序前:"+map);
map=sortMapByKey(map);
System.out.println("排序后"+map);
这样就按照字典排序排好了
拼成字符串进行MD5加密
/**
* MD5加密
* @param s
* @return
*/
public final static String MD5(String s) {
char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
try {
byte[] btInput = s.getBytes();
// 获得MD5摘要算法的 MessageDigest 对象
MessageDigest mdInst = MessageDigest.getInstance("MD5");
// 使用指定的字节更新摘要
mdInst.update(btInput);
// 获得密文
byte[] md = mdInst.digest();
// 把密文转换成十六进制的字符串形式
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
Map<String, Object>map=new HashMap<String,Object>();
map.put("name", "harry");
map.put("level", "top");
map.put("alary", 1000);
System.out.println("排序前:"+map);
map=sortMapByKey(map);
System.out.println("排序后"+map);
List<Object> list=new ArrayList<Object>();
String str="";
Iterator<String> iter = map.keySet().iterator();
while(iter.hasNext()){
String key=iter.next();
Object value = map.get(key);
list.add(key+"="+value);
}
int leng=list.size()-1;
for(int i=0;i<leng;i++){
str+=(list.get(i)+"&");//拼索要加密的字符串格式
}
str+=list.get(leng);
System.out.println(str);//所要加密的字符串
System.out.println(MD5(str));//加密之后的密文
这样MD5加密就可以了!