MD5加密及密碼驗證
阿新 • • 發佈:2018-12-12
MD5加密是常用的加密演算法。可以對任意字串的進行加密。生成16位字元陣列。
密碼驗證:將輸入的密碼進行MD5加密轉換後的字串與資料庫的密碼進行比對。相等則驗證通過。
1 package utils; 2 3 import java.security.MessageDigest; 4 import java.security.NoSuchAlgorithmException; 5 6 public class MD5Utils{ 7 /** 8 * 字串的加密 9 * @param str 10 * @return byte[]11 * @throws NoSuchAlgorithmException 12 */ 13 public static byte[] encryptionStr(String str) throws NoSuchAlgorithmException { 14 if(str!=null){ 15 //加密後得到的位元組陣列 16 byte[] bytes = null; 17 // 獲取MD5演算法例項 得到一個md5的訊息摘要 18 MessageDigest md = MessageDigest.getInstance("MD5");19 //新增要進行計算摘要的資訊 20 md.update(str.getBytes()); 21 //得出摘要結果 22 bytes = md.digest(); 23 return bytes; 24 } 25 return null; 26 } 27 //字元陣列轉成字串 28 private static String toHex(byte[] bytes) { 29 30 final char[] HEX_DIGITS = "0123456789ABCDEF".toCharArray();31 StringBuilder ret = new StringBuilder(bytes.length * 2); 32 for (int i=0; i<bytes.length; i++) { 33 ret.append(HEX_DIGITS[(bytes[i] >> 4) & 0x0f]); 34 ret.append(HEX_DIGITS[bytes[i] & 0x0f]); 35 } 36 return ret.toString(); 37 } 38 //密碼驗證 39 /* 40 * 將加密後的位元組陣列轉換成十六進位制的字元竄,形成最終的密碼。 41 * 當輸入字串經過MD5加密後,得到的字串與密碼一樣,則認為密碼驗證通過。 42 * */ 43 public static boolean verification(String inputPassword,String dbPassword) throws NoSuchAlgorithmException { 44 String passwordByMD5 = toHex(encryptionStr(inputPassword)); 45 if(dbPassword.equals(passwordByMD5)){ 46 return true; 47 } 48 return false; 49 } 50 public static void main(String[] args) throws NoSuchAlgorithmException { 51 String a = "test1"; 52 String b ="test2"; 53 String c ="ABCDE"; 54 String [] str={a,b,c}; 55 for (String s : str) { 56 byte [] bytes=encryptionStr(s); 57 System.out.println("資料:" + s+" 加密後為:"+bytes.toString()); 58 } 59 String dbPassword = toHex(encryptionStr("abcdef")); 60 System.out.println(dbPassword); 61 String inputPassword = "abcdef"; 62 String inputPassword2 = "abcdeffff"; 63 System.out.println(verification(inputPassword,dbPassword)); 64 System.out.print(verification(inputPassword,inputPassword2)); 65 } 66 }
gitHub原始碼:MD5加密及密碼驗證