1. 程式人生 > >Md5碼的生成及變種Md5碼的生成

Md5碼的生成及變種Md5碼的生成

新建一個方法生成Md5碼,將給出引數字串生成Md5碼

public String stringTo32Md5(String str) {
	String md5 = null;
	if (str != null && str.length() != 0) {
		try {
			MessageDigest md = MessageDigest.getInstance("MD5");
			md.update(str.getBytes());
			byte b[] = md.digest();
			int x;
			StringBuffer buf = new StringBuffer("");
			for (int i = 0; i < b.length; i++) {
				x = b[i];
				if (x < 0) {
					x += 256;
				}
				if (x < 16) {
					buf.append("0");
				}
				buf.append(Integer.toHexString(x));
				md5 = buf.toString();
			}
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
		}
	}
	return md5;
}

Md5碼是32位的,我們也能將Md5碼生成16位或其他位數,成為變種Md5碼。

寫一個生成16位Md5碼的方法,將擷取原生Md5碼中間的16位,方法的引數,還是為要加密成Md5碼的字串。

public String stringTo16Md5(String str) {
	String md5 = null;
	if (str != null && str.length() != 0) {
		md5 = stringTo32Md5(str);
	}
	return md5.substring(8, 24);
}

PS:最後的substring(8,24)是擷取的中間段16位,可以自由設定擷取的區域和長度。