MD5或者SHA加密為32位字元的具體演算法,值得學習,標準JAVA MD5方法
import java.security.MessageDigest; //MD5或者SHA加密為32位字元的具體演算法,值得學習 //MD5密碼的明文可以通過網站查詢:https://www.cmd5.com/hash.aspx
//原始碼是來自系統
public class MD5 { public static void main(String[] args) { System.out.println(MD5toString("123456")); System.out.println(MD5toString("1234567")); System.out.println(MD5toString("12345678")); System.out.println(MD5toString("12345679")); System.out.println(MD5toString("123456790"));
}
public static String MD5toString(String s) { try { // 返回實現指定摘要演算法的 MessageDigest物件 引數可以是sha或者MD5 MessageDigest md = MessageDigest.getInstance("md5"); // 使用指定的 byte 陣列對摘要進行最後更新,然後完成摘要計算。 byte[] bytes = md.digest(s.getBytes("utf-8")); return toHex(bytes); } catch (Exception e) { throw new RuntimeException(e); } }
private static String toHex(byte[] bytes) { // 個人在設計祕鑰時可以更改字串“0123456789ABCDEF” final char[] HEX_DIGITS = "0123456789ABCDEF".toCharArray(); StringBuilder ret = new StringBuilder(bytes.length * 2); for (int i = 0; i < bytes.length; i++) { // 取byte陣列元素的向右移動4位後與0x0f 即將元素的高四位變為第四位作為下標取HEX_DIGITS的元素 ret.append(HEX_DIGITS[(bytes[i] >> 4) & 0x0f]); // 取byte陣列元素後與0x0f 即將元素的底四位作為下標取HEX_DIGITS的元素 ret.append(HEX_DIGITS[bytes[i] & 0x0f]); } return ret.toString(); } }