下面是一个Java中使用MD5加密算法进行不可逆加密的示例代码。MD5是一种广泛使用的哈希函数,可以生成一个128位(16字节)的哈希值,通常以一个32位的十六进制数表示。由于MD5算法设计上的缺陷,它不再被认为是安全的加密方法,但对于一些非安全敏感的场景(如校验文件完整性)仍然可以使用。
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Example {
/**
* 使用MD5算法对字符串进行加密
*
* @param input 待加密的字符串
* @return 加密后的字符串(32位十六进制数)
*/
public static String encryptMD5(String input) {
try {
// 创建MD5 MessageDigest 实例
MessageDigest md = MessageDigest.getInstance("MD5");
// 使用指定的字节数组更新摘要
md.update(input.getBytes());
// 完成哈希计算,得到结果
byte[] digest = md.digest();
// 将字节数组转换为十六进制字符串
StringBuilder hexString = new StringBuilder();
for (byte b : digest) {
String hex = Integer.toHexString(0xff & b);
if (hex.length() == 1) {
hexString.append('0');
}
hexString.append(hex);
}
// 返回加密后的字符串
return hexString.toString();
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
String originalString = "Hello, World!";
String md5Result = encryptMD5(originalString);
System.out.println("Original: " + originalString);
System.out.println("MD5: " + md5Result);
}
}
这段代码首先通过`MessageDigest.getInstance("MD5")`获取MD5算法的`MessageDigest`实例,然后使用`update`方法更新要加密的数据(这里是字符串的字节表示),最后通过`digest`方法完成哈希计算,得到加密后的字节数组。之后,通过遍历字节数组,将每个字节转换为两位的十六进制数(不足两位前面补0),拼接成最终的加密字符串。
请注意,MD5加密是不可逆的,即你不能从加密后的字符串恢复原始字符串。