java 加解密示例md5
时间: 2024-09-26 10:01:15 浏览: 31
在Java中,MD5是一种常见的哈希函数,用于创建数据的固定长度摘要。它通常用于密码安全存储,验证数据完整性等场景。以下是一个简单的Java MD5加密示例:
```java
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.util.Base64;
public class MD5Example {
public static String encrypt(String input, String secretKey) {
try {
// 将字符串转换为字节数组
byte[] keyBytes = secretKey.getBytes("UTF-8");
SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, "HmacSHA1");
// 创建Mac对象并初始化
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(secretKeySpec);
// 对输入进行加密
byte[] encrypted = mac.doFinal(input.getBytes("UTF-8"));
// 返回Base64编码的密文
return Base64.getEncoder().encodeToString(encrypted);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
String inputToHash = "Hello, World!";
String secretKey = "YourSecretKey"; // 使用你的密钥替换这个字符串
String hashedInput = encrypt(inputToHash, secretKey);
System.out.println("Encrypted MD5: " + hashedInput);
}
}
```
在这个例子中,我们首先将输入和秘钥转换成字节数组,然后创建一个`HmacSHA1`算法的MAC实例,并使用密钥对其进行初始化。接着对输入数据进行加密,最后将结果转换为Base64编码以便于显示。
如果你想要解密,实际上MD5是不可逆的,所以直接基于MD5进行解密是没有意义的。它的目的是为了保证数据的一致性,而不是保密性。但在某些特定的应用场景下,如生成的MD5与数据库中的值匹配来检查数据是否完整,你可以通过相同的步骤计算MD5来比较。
阅读全文