一、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; } } 最后:欢迎大家关注我的公众号【JavaRush】,主要是关于Java方面的一些知识点总结和面试题,希望大家多多关注一起交流。