package cn.koolcloud.ipos.appstore.utils;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
/**
* <p>Title: MD5.java</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2013</p>
* <p>Company: All In Pay</p>
* @author Teddy
* @date 2013-11-11
* @version
*/
public class MD5 {
private static final String TAG = "MD5";
//public static final String server_addr = "http://192.168.1.103:8004/";
//public static final String server_addr = "http://140.206.112.78:8006/";
public static final String formatter ="xml";// "xml";//json
public static final String formatter_json = "json";//json
public static final String formatter_xml = "xml";//json
public static String getMD5Str(String str) {
MessageDigest messageDigest = null;
try {
messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(str.getBytes("UTF-8"));
} catch (NoSuchAlgorithmException e) {
Logger.d("NoSuchAlgorithmException caught!");
System.exit(-1);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
byte[] byteArray = messageDigest.digest();
StringBuffer md5StrBuff = new StringBuffer();
for (int i = 0; i < byteArray.length; i++) {
if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)
md5StrBuff.append("0")
.append(Integer.toHexString(0xFF & byteArray[i]));
else
md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
}
return md5StrBuff.toString();
}
/*public static String getSessionId() throws Exception{
return Utils.parseOutSessionId(LoginTestHtml.login());
}*/
// public static String parseOutSessionId(WebResponse response) throws ParserConfigurationException, SAXException, IOException{
// if(formatter.equals("xml")){
// InputStream is = response.getContentAsStream();
// DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
// Document document = documentBuilder.parse(is);
// NodeList nodeList = document.getElementsByTagName("session_id");
//
// if(nodeList.getLength() > 0){
// Node sessionIdNode = nodeList.item(0);
// return sessionIdNode.getTextContent();
// }
// }
// else{
//
// }
// return null;
// }
public static String sortParameters(List<String> parameters){
Set<String> sort = new TreeSet<String>();
for(String p : parameters){
sort.add(p);
}
String ret = "";
for(String s : sort){
ret = ret.concat(s);
}
return ret;
}
public static List<NameValuePair> appendParameters(List<NameValuePair> list, boolean type) {
List<NameValuePair> parameters = new ArrayList<NameValuePair>();
NameValuePair sign_method = new BasicNameValuePair("sign_method","md5");
NameValuePair format = null;
if (type) {
format = new BasicNameValuePair("format", formatter_json);
} else {
format = new BasicNameValuePair("format", formatter_xml);
}
NameValuePair time = new BasicNameValuePair("time", ""+new Date().getTime());
parameters.add(sign_method);
parameters.add(format);
parameters.add(time);
parameters.addAll(list);
List<String> pList = new ArrayList<String>();
for(NameValuePair p : parameters){
pList.add(p.getName()+"="+p.getValue());
}
String signstr = sortParameters(pList);
signstr = getMD5Str(signstr);
NameValuePair sign = new BasicNameValuePair("sign",signstr);
parameters.add(sign);
return parameters;
}
public static List<NameValuePair> appendAppsParameters(List<NameValuePair> list){
return appendParameters(list, false);
}
public static List<NameValuePair> appendAppsParametersJSON(List<NameValuePair> list) {
return appendParameters(list, true);
}
public static void main(String[] args){
System.out.println(getMD5Str("account=testage=10format=xmlgender=malelocation=ZH_CNmail=feng.wei.355300@gmail.comnickName=fweipassword=testsign_method=md5time=1341373791611"));
}
}