java md5加解密示例
时间: 2024-09-26 18:01:15 浏览: 46
MD5是一种广泛使用的哈希函数,用于将任意长度的数据生成固定长度的摘要。在Java中,你可以使用`java.security.MessageDigest`类来实现MD5加密和解密。实际上,MD5并不支持解密,它是一个单向散列算法,主要用于数据完整性检查。
以下是一个简单的Java MD5加密示例:
```java
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
public class MD5Example {
public static String encrypt(String input, String secretKey) {
try {
SecretKeySpec key = new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(key);
byte[] hashBytes = mac.doFinal(input.getBytes(StandardCharsets.UTF_8));
return bytesToHex(hashBytes);
} catch (NoSuchAlgorithmException | InvalidKeyException e) {
throw new RuntimeException("Error generating MD5 hash", e);
}
}
private static String bytesToHex(byte[] bytes) {
StringBuilder result = new StringBuilder();
for (byte b : bytes) {
result.append(String.format("%02x", b & 0xff));
}
return result.toString();
}
// 要加密的字符串
public static void main(String[] args) {
String input = "Hello, World!";
String secretKey = "your_secret_key";
System.out.println("Original: " + input);
String encrypted = encrypt(input, secretKey);
System.out.println("Encrypted: " + encrypted);
}
}
```
在这个例子中,我们使用了`HmacSHA256`作为底层的加密算法,因为MD5本身不是加密算法,只是散列算法。然而,由于MD5的常见性和易复制,现在更推荐使用更强的加密算法来保护敏感信息。
阅读全文