package com.yxcheng.token.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yxcheng.token.common.model.TaxUserInfo;

import java.security.MessageDigest;

public class MD5Util {

	private static String byteArrayToHexString(byte b[]) {
		StringBuffer resultSb = new StringBuffer();
		for (int i = 0; i < b.length; i++)
			resultSb.append(byteToHexString(b[i]));

		return resultSb.toString();
	}

	private static String byteToHexString(byte b) {
		int n = b;
		if (n < 0)
			n += 256;
		int d1 = n / 16;
		int d2 = n % 16;
		return hexDigits[d1] + hexDigits[d2];
	}

	public static String MD5Encode(String origin, String charsetname) {
		String resultString = null;
		try {
			resultString = new String(origin);
			MessageDigest md = MessageDigest.getInstance("MD5");
			if (charsetname == null || "".equals(charsetname))
				resultString = byteArrayToHexString(md.digest(resultString
						.getBytes()));
			else
				resultString = byteArrayToHexString(md.digest(resultString
						.getBytes(charsetname)));
		} catch (Exception exception) {
		}
		return resultString;
	}
	
	public static String MD5Encode(String origin) {
		String charsetname = "UTF-8";
		String resultString = null;
		try {
			resultString = new String(origin);
			MessageDigest md = MessageDigest.getInstance("MD5");
			if (charsetname == null || "".equals(charsetname))
				resultString = byteArrayToHexString(md.digest(resultString
						.getBytes()));
			else
				resultString = byteArrayToHexString(md.digest(resultString
						.getBytes(charsetname)));
		} catch (Exception exception) {
		}
		return resultString;
	}

	private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5",
			"6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };

	public static void main(String[] args) {
		String userJson = "{\"password\":\"Bjjs64130088!!\",\"phone\":\"18611725845\",\"loginType\":\"b\",\"userType\":\"办税员\",\"username\":\"18611725845\"}";
		JSONObject loginInfoJson = JSON.parseObject(userJson);
		TaxUserInfo bean;
		String loginType = "";
		if (loginInfoJson.containsKey("loginType")) {
			loginType = loginInfoJson.getString("loginType");
		}
		if ("b".equals(loginType)) {
			bean = new TaxUserInfo();
			if (loginInfoJson.containsKey("password")) {
				bean.setPassword(loginInfoJson.getString("password"));
			}
			if (loginInfoJson.containsKey("username")) {
				bean.setUsername(loginInfoJson.getString("username"));
			}
			if (loginInfoJson.containsKey("phone")) {
				bean.setPhone(loginInfoJson.getString("phone"));
			}
			if (loginInfoJson.containsKey("userType")) {
				bean.setUserType(loginInfoJson.getString("userType"));
			}
			bean.setLoginType("b");
			System.out.println(MD5Util.MD5Encode(bean.toString()));
		}
	}

}
