欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MD5简介及使用方式

程序员文章站 2022-03-14 19:52:26
...

概念

MD5加密算法全称是 Message-Digest Algorithm 5(信息-摘要算法),它对信息进行摘要采集,再通过一定的位运算,最终获取加密后的MD5字符串。

MD5的特点

  • 针对不同长度的待加密的数据、字符串等等,其都可以返回一个固定长度的MD5加密字符串。(通常为32位的16进制字符串)
  • 其加密过程几乎不可逆,除非维护一个庞大的Key-Value数据库来进行碰撞**,否则几乎无法解开。
  • 运算简便,且可实现方式多样,通过一定的处理方式也可以避免碰撞算法的**。(例如加盐:添加随机字符串)
  • 对于一个固定的字符串、数字等等,MD5加密后的字符串也是固定的,也就是说不管MD5加密多少次,都是同样的结果。

使用方式【Java】

1. 添加md5依赖坐标

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.3.2</version>
</dependency>
<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.3</version>
</dependency>

2. 编写工具类

public class Md5 {
		/**
		 * MD5加密方法
		 *
		 * @param text 明文
		 * @param key  秘钥
		 * @return 密文
		 * @throws Exception
		 */
		public static String md5(String text, String key) throws Exception {
			// 加密后的字符串
			String encodeStr = DigestUtils.md5Hex(text + key);
			return encodeStr;
		}
		
		/**
		 * MD5验证方法
		 *
		 * @param text 明文
		 * @param key  秘钥
		 * @param md5  密文
		 * @return true
		 * @throws Exception
		 */
		public static boolean verify(String text, String key, String md5) throws Exception {
			// 根据传入的**进行验证
			String md5Text = md5(text, key);
			if (md5Text.equalsIgnoreCase(md5)) {
				System.out.println("MD5验证通过!");
				return true;
			}
			return false;
		}
		
    	// 测试方法
		public static void main(String[] args) throws Exception {
			// 注册:用户名tom 密码123456
			// 添加用户时,进行加密
			String testString = Md5.md5("123456", "testKey");
			System.out.println("经MD5加密后的字符串为:" + testString);
			
			// 登录:用户名tom 密码123456     select * from user where username = tom and password = 123456
			// 根据用户名进行查询 f00485441dfb815c75a13f3c3389c0b9
			boolean verify = Md5.verify("123456", "testKey", "f00485441dfb815c75a13f3c3389c0b9");
			System.out.println(verify);
		}
	}
相关标签: MD5 java md5