MD5加密是一种我们日常开发中经常使用到的加密方式。
MD5加密的特点:
1.操作简单。
2.不可逆向解密。
话不多说,下面介绍两种在java代码中使用MD5:
方式一:
package com.xh.utils;
import java.security.MessageDigest;
public class MD5Util {
/**
* MD5加密
* @param s:要加密的字符串
* @return:密文
*/
public static String MD5(String s) {
try {
// MessageDigest对象的getInstance方法可以返回实现指定摘要算法
MessageDigest md = MessageDigest.getInstance("MD5");
// digest方法传递一个字节数组,然后对字节数组进行摘要计算,返回的字节数组长度为 16
byte[] bytes = md.digest(s.getBytes("utf-8"));
return toHex(bytes);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 把MD5加密后的字节数组进行有规律的替换
* @param bytes:MD5加密的字节数组
* @return:返回替换后的密文
*/
private static String toHex(byte[] bytes) {
final char[] HEX_DIGITS = "0123456789ABCDEF".toCharArray();
StringBuilder ret = new StringBuilder(bytes.length * 2);
for (int i=0; i<bytes.length; i++) {
ret.append(HEX_DIGITS[(bytes[i] >> 4) & 0x0f]);
ret.append(HEX_DIGITS[bytes[i] & 0x0f]);
}
return ret.toString();
}
}
方式二:该方式参照 MD5加密是什么?为什么不可解密?_md5为什么不能解密-CSDN博客
1.先导入依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
2.MD5工具类
package com.jd.test;
import org.apache.commons.codec.digest.DigestUtils;
import java.security.MessageDigest;
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);
System.out.println("MD5加密后的字符串为:encodeStr="+encodeStr);
return encodeStr;
}
/**
* MD5验证方法
*
* @param text 明文
* @param key 盐值
* @param md5 密文
* @return true/false
* @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;
}
}
本文为学习笔记,所参考文章均已附上链接,若有疑问请私信!
新手小白,欢迎留言指正!