1. 程式人生 > >MD5或者SHA加密為32位字元的具體演算法,值得學習,標準JAVA MD5方法

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();     } }