package com.ch.ebusiness.util;
import java.security.MessageDigest;
public class MD5Util {
/***
* MD5加码生成32位md5码
*/
public static String string2MD5(String inStr) {
MessageDigest md5 = null;
try {
md5 = MessageDigest.getInstance("MD5");
} catch (Exception e) {
System.out.println(e.toString());
e.printStackTrace();
return "";
}
char[] charArray = inStr.toCharArray();
byte[] byteArray = new byte[charArray.length];
for (int i = 0; i < charArray.length; i++)
byteArray[i] = (byte) charArray[i];
byte[] md5Bytes = md5.digest(byteArray);
StringBuffer hexValue = new StringBuffer();
for (int i = 0; i < md5Bytes.length; i++) {
int val = ((int) md5Bytes[i]) & 0xff;
if (val < 16)
hexValue.append("0");
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
}
/***
* 自己规则加密
* @param inStr
* @return
*/
public static String MD5(String inStr) {
String xy = "abc";
String finalStr = "";
if (inStr != null) {
String fStr = inStr.substring(0, 1);
String lStr = inStr.substring(1, inStr.length());
finalStr = string2MD5(fStr + xy + lStr);
} else {
finalStr = string2MD5(xy);
}
return finalStr;
}
}
代码学习
这段代码是一个MD5加密工具类,用于将输入的字符串进行MD5加密,并返回32位的MD5码。
主要的功能是两个方法:
-
string2MD5
方法:这个方法将输入的字符串使用MD5算法进行加密,并返回加密后的32位MD5码。它首先创建一个MessageDigest
对象,用于实现MD5加密,然后将输入字符串转换成字节数组,通过md5.digest(byteArray)
得到MD5字节数组。最后,将MD5字节数组转换成十六进制形式的字符串,并返回。 -
MD5
方法:这个方法是基于规则的自定义加密方法。它使用了一个固定的字符串"abc"(即xy
),将输入的字符串分割为两部分,并在第一个字符后插入"abc",然后调用string2MD5
方法对新字符串进行MD5加密,最后返回加密后的MD5码。
使用这个MD5工具类,可以对敏感信息进行加密存储,提高信息安全性。常见的应用场景包括对密码、令牌、数字签名等进行加密处理。请注意,MD5虽然在一定程度上增加了信息的安全性,但不是绝对安全的,因为MD5是不可逆的,存在被暴力破解的风险。对于更高级的安全要求,建议使用更加安全的加密算法,如SHA-256等。