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);
}
}
上一篇: 选数
下一篇: Java 程序中MD5的简单使用