Md5碼的生成及變種Md5碼的生成
阿新 • • 發佈:2018-12-04
新建一個方法生成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位,可以自由設定擷取的區域和長度。