Java中MD5加密的幾種方式
阿新 • • 發佈:2020-11-26
一、MD5加密概述:
MD5資訊摘要演算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼雜湊函式,可以產生出一個128位(16位元組)的雜湊值(hash value),用於確保資訊傳輸完整一致。
MD5為不可逆雜湊演算法,可用於儲存使用者密碼,儲存後永遠不需要知道明文。密碼比較時只需將使用者輸入的密碼再次轉成MD5碼與儲存的相比較即可得知使用者輸入密碼是否正確。linux/unix作業系統一般採用MD5進行使用者密碼加密。
二、Java實現MD5加密的幾種方式:
1、Java自帶的MessageDigest實現
import java.security.MessageDigest; /** * MD5加密 */ public class MD5Util { //鹽,用於混交md5 private static final String slat = "&%5123***&&%%$$#@"; public static String encrypt(String dataStr) { try { dataStr = dataStr + slat; MessageDigest m = MessageDigest.getInstance("MD5"); m.update(dataStr.getBytes("UTF-8")); byte s[] = m.digest(); String result = ""; for (int i = 0; i < s.length; i++) { result += Integer.toHexString((0x000000FF & s[i]) | 0xFFFFFF00).substring(6); } return result; } catch (Exception e) { e.printStackTrace(); } return ""; } }
2、Spring中的DigestUtils工具類
import org.springframework.util.DigestUtils; /** * MD5加密 */ public class MD5Util { //鹽,用於混交md5 private static final String slat = "&%5123***&&%%$$#@"; public static String encrypt(String dataStr) throws UnsupportedEncodingException { String base = dataStr + slat; String md5 = DigestUtils.md5DigestAsHex(base.getBytes("UTF-8")); return md5; } }
3、Apache中的DigestUtils工具類
pom.xml中引入:
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>
程式碼實現:
import org.apache.commons.codec.digest.DigestUtils; /** * MD5加密 */ public class MD5Util { //鹽,用於混交md5 private static final String slat = "&%5123***&&%%$$#@"; public static String encrypt(String dataStr) throws UnsupportedEncodingException { String base = dataStr + slat; String md5 = DigestUtils.md5Hex(base.getBytes("UTF-8")); return md5; } }