MD5類加密解密工具類
阿新 • • 發佈:2018-11-12
MD5 加密/解密演算法工具類 MD5加碼 生成32位md5碼
做登入註冊頁面輸入密碼後,儲存加密後的密碼到資料庫保密用的
由於MD5是單向加密型 也就是隻能加密不能解密 所以應該把使用者的密碼加密後與資料庫的密碼對照 即可登入
package top.lolcl.myblog.util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; /** * MD5 加密/解密演算法工具類 MD5加碼 生成32位md5碼 * 做登入註冊頁面輸入密碼後,儲存加密後的密碼到資料庫保密用的 * @author sanch * */ public class MyMD5Util { /** * 第一種方式 * 加鹽方式 */ public static String md5password(String password) { try { //得到一個資訊摘要器 MessageDigest digest = MessageDigest.getInstance("md5"); byte[] result = digest.digest(password.getBytes()); StringBuffer buffer = new StringBuffer(); //把每一個byte做一個與運算0xff; for(byte b:result) { //與運算 int number = b & 0xff;//加鹽 十六進位制 String str = Integer.toHexString(number); if(str.length() == 1) { buffer.append("0"); } buffer.append(str); } //標準的md5加密後的結果 return buffer.toString(); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); return ""; } } /** * 第二種 * 普通方法 * @param key * @return */ public static String MD5(String key) { char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; try { byte[] btInput = key.getBytes(); // 獲得MD5摘要演算法的 MessageDigest 物件 MessageDigest mdInst = MessageDigest.getInstance("MD5"); // 使用指定的位元組更新摘要 mdInst.update(btInput); // 獲得密文 byte[] md = mdInst.digest(); // 把密文轉換成十六進位制的字串形式 int j = md.length; char str[] = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; str[k++] = hexDigits[byte0 >>> 4 & 0xf]; str[k++] = hexDigits[byte0 & 0xf]; } return new String(str); } catch (Exception e) { return null; } } /** * 加密後解密 執行一次為加密 再執行一次為解密 * @param inStr * @return */ public static String JM(String inStr) { byte[] a = inStr.getBytes(); for(int i = 0 ; i < a.length ; i++) { a[i] = (byte) (a[i] ^ 't'); } return new String(a); } public static void main(String[] args) { System.out.println(MyMD5Util.md5password("123wert")); System.out.println(MyMD5Util.MD5("123")); System.out.println(MyMD5Util.md5password(md5password(md5password("123")))); System.out.println(MyMD5Util.JM(JM("123"))); } }