MD5加密很常用,比如資料庫中密碼等敏感欄位需要加密存儲,核對密碼時先以同樣的方式對用戶輸入的密碼進行加密,再與資料庫中存儲的密碼比較。 MD5加密有很多種實現方式,此處介紹2種。 1、使用JDK自帶MessageDigest public class MD5Util { public static ...
MD5加密很常用,比如資料庫中密碼等敏感欄位需要加密存儲,核對密碼時先以同樣的方式對用戶輸入的密碼進行加密,再與資料庫中存儲的密碼比較。
MD5加密有很多種實現方式,此處介紹2種。
1、使用JDK自帶MessageDigest
public class MD5Util { public static String getMD5Str(String str) { byte[] digest = null; try { MessageDigest md5 = MessageDigest.getInstance("md5"); digest = md5.digest(str.getBytes("utf-8")); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } //16是表示轉換為16進位數 String md5Str = new BigInteger(1, digest).toString(16); return md5Str; } }
2、使用Spring自帶的DigestUtils
上面是自己封裝,太麻煩,Spring已經給我們封裝好了。
String md5Str = DigestUtils.md5DigestAsHex("原串".getBytes());
效果都是一樣的,返回的字元串都是32個字元。
說明
只使用md5加密是不行的,很容易被破解。常見的做法有:
- 先對原串進行一些處理,比如先給它拼接一個字元串常量,再進行md5加密。即使對方解密,也獲取不到原串。
- 使用多種加密演算法。比如先用md5加密,再對加密的結果使用其它加密演算法進行加密。比如先使用md5加密,對加密的結果再次使用md5加密。
這2種方式方式經常一起使用。