复活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