1. 程式人生 > >Java漢字md5值不一致問題

Java漢字md5值不一致問題

通過main方法測試得到一個加密值,通過servlet request呼叫得到一個加密值,都是加密相同的漢字,但是結果不同。

如果是加密英文,則不會有這種問題。

原因就在於漢字編碼,在加密時設定一下編碼UTF-8,問題解決。

	public static String EncoderByMd5(String str) {
		String result = "";
		MessageDigest md5 = null;
		try {
			md5 = MessageDigest.getInstance("MD5");
			// 這句是關鍵
			md5.update(str.getBytes("UTF-8"));
		} catch (NoSuchAlgorithmException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		byte b[] = md5.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));
		}
		result = buf.toString();

		return result;
	}