MD5
package cn.java.utils; import java.security.MessageDigest; public class MD5 { private static final String[] digital = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; private static String initMD5(String txt) throws Exception { // String password = "123456"; //32位 16进制的字符串 // 万物皆对象 获取封装MD5算法的核心类 MessageDigest md5 = MessageDigest.getInstance("MD5"); // 将明文经过md5加密后长度为16的字节数组 ==> 32位的字符串(16进制) byte[] bytes = md5.digest(txt.getBytes("UTF-8")); // 16个长度 String miWen = ""; // 用来保存最终密文 for (byte b : bytes) { int temp = b; if (temp < 0) { temp += 256; } // 一个字节有256种排列组合 经过判断后temp一定是一个正数(0`15之间) int index1 = temp / 16; // 取商 int index2 = temp % 16; // 取余 miWen += digital[index1] + digital[index2]; } return miWen; } public static String finnalMD5(String txt) throws Exception { return initMD5(initMD5(initMD5(txt) + "reapsun" + txt) + "reapsun" + txt); //不要对外暴露 } public static void main(String[] args) throws Exception { String miWen = MD5.finnalMD5("123456"); System.out.println(miWen); } }