import com.weiwen.provider.service.MapKeyComparator;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.*;
public class MD5 {
public static void main(String[] args) {
MD5 md5 = new MD5();
String ss = md5.md5("10012843443");
String s="61430CA53505866C97CD7D45FD01966A";
System.out.println(s.length());
System.err.println(ss);
Map<String, Object>map=new HashMap<String,Object>();
map.put("name", "harry");
map.put("b", "harry");
map.put("level", "top");
map.put("g", "");
map.put("m", "lal");
map.put("alary", 1000);
String sign = sign(map);
System.out.println("签名为================="+md5(sign));
}
/**
*
* @param plainText
* 明文
* @return 32位密文
*/
public String encryption(String plainText) {
String md5 = new String();
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
md5 = buf.toString();
} catch (Exception e) {
e.printStackTrace();
}
return md5;
}
/**
* 使用 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;
}
/**
* 签名
*/
public static String sign(Map<String,Object>map){
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));//加密之后的密文
return str;
}
}
MapKeyComparator类
import java.util.Comparator;
public class MapKeyComparator implements Comparator<String> {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
}
以下是结果: