MD5演算法-雜湊演算法
阿新 • • 發佈:2018-12-26
MD5演算法 雜湊演算法 MD5演算法具有以下特點: 1、壓縮性:任意長度的資料,算出的MD5值長度都是固定的。 2、容易計算:從原資料計算出MD5值很容易。 3、抗修改性:對原資料進行任何改動,哪怕只修改1個位元組,所得到的MD5值都有很大區別。 4、強抗碰撞:已知原資料和其MD5值,想找到一個具有相同MD5值的資料(即偽造資料)是非常困難的。 import java.security.MessageDigest; public class MD5Util { public static String digest16(String inStr) { return digest(inStr, 16); } public static String digest(String inStr) { return digest(inStr, 32); } private static String digest(String inStr, int rang) { MessageDigest md5 = null; if ( StringUtil.isEmpty(inStr) ) { return ""; } try { md5 = MessageDigest.getInstance("MD5"); } catch (Exception e) { e.printStackTrace(); return ""; } char[] charArray = inStr.toCharArray(); byte[] byteArray = new byte[charArray.length]; for (int i = 0; i < charArray.length; i++) { byteArray[i] = (byte) charArray[i]; } byte[] md5Bytes = md5.digest(byteArray); StringBuilder hexValue = new StringBuilder(); for (int i = 0; i < md5Bytes.length; i++) { int val = ((int) md5Bytes[i]) & 0xff; if (val < 16) hexValue.append("0"); hexValue.append(Integer.toHexString(val)); } if ( rang == 32 ) { return hexValue.toString(); } else { return hexValue.toString().substring(8, 24); } } public static void main(String args[]) { String s = new String("admin"); System.out.println(digest(s)); } }