复活MD5
This commit is contained in:
@@ -0,0 +1,90 @@
|
|||||||
|
package com.bao.dating.util;
|
||||||
|
|
||||||
|
import java.security.MessageDigest;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MD5工具类
|
||||||
|
* 提供MD5加密功能
|
||||||
|
* @author KilLze
|
||||||
|
*/
|
||||||
|
public class MD5Util {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对字符串进行MD5加密
|
||||||
|
* @param input 待加密的字符串
|
||||||
|
* @return MD5加密后的32位小写字符串
|
||||||
|
*/
|
||||||
|
public static String encrypt(String input) {
|
||||||
|
if (input == null || input.isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
MessageDigest md = MessageDigest.getInstance("MD5");
|
||||||
|
byte[] digest = md.digest(input.getBytes());
|
||||||
|
return bytesToHex(digest);
|
||||||
|
} catch (NoSuchAlgorithmException e) {
|
||||||
|
throw new RuntimeException("MD5算法不可用", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对字符串进行MD5加密(带盐值)
|
||||||
|
* @param input 待加密的字符串
|
||||||
|
* @param salt 盐值
|
||||||
|
* @return MD5加密后的32位小写字符串
|
||||||
|
*/
|
||||||
|
public static String encryptWithSalt(String input, String salt) {
|
||||||
|
if (input == null || input.isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (salt == null) {
|
||||||
|
salt = "";
|
||||||
|
}
|
||||||
|
return encrypt(input + salt);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 验证字符串与MD5值是否匹配
|
||||||
|
* @param input 原始字符串
|
||||||
|
* @param md5Hash MD5哈希值
|
||||||
|
* @return 是否匹配
|
||||||
|
*/
|
||||||
|
public static boolean verify(String input, String md5Hash) {
|
||||||
|
if (input == null || md5Hash == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return encrypt(input).equalsIgnoreCase(md5Hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 验证字符串与MD5值是否匹配(带盐值)
|
||||||
|
* @param input 原始字符串
|
||||||
|
* @param salt 盐值
|
||||||
|
* @param md5Hash MD5哈希值
|
||||||
|
* @return 是否匹配
|
||||||
|
*/
|
||||||
|
public static boolean verifyWithSalt(String input, String salt, String md5Hash) {
|
||||||
|
if (input == null || md5Hash == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (salt == null) {
|
||||||
|
salt = "";
|
||||||
|
}
|
||||||
|
return encryptWithSalt(input, salt).equalsIgnoreCase(md5Hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将字节数组转换为十六进制字符串
|
||||||
|
* @param bytes 字节数组
|
||||||
|
* @return 十六进制字符串
|
||||||
|
*/
|
||||||
|
private static String bytesToHex(byte[] bytes) {
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for (byte b : bytes) {
|
||||||
|
sb.append(String.format("%02x", b));
|
||||||
|
}
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user