用java写一个数据通过md5加盐加密的demo
时间: 2024-03-13 22:44:38 浏览: 55
好的,以下是使用Java语言编写的数据通过MD5加盐加密的Demo:
```java
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
public class Md5SaltDemo {
public static void main(String[] args) throws NoSuchAlgorithmException {
// 需要加密的数据
String data = "hello world";
// 生成随机盐值
byte[] salt = new byte[16];
SecureRandom random = new SecureRandom();
random.nextBytes(salt);
// 将数据和盐值拼接,并计算 MD5 值
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update((data + new String(salt)).getBytes());
byte[] digest = md5.digest();
// 将计算出的 MD5 值转换为十六进制字符串
StringBuilder sb = new StringBuilder();
for (byte b : digest) {
sb.append(String.format("%02x", b));
}
String hashStr = sb.toString();
System.out.println("盐值:" + bytesToHex(salt));
System.out.println("加密后的数据:" + hashStr);
}
private static final char[] HEX_ARRAY = "0123456789abcdef".toCharArray();
public static String bytesToHex(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
for (int i = 0; i < bytes.length; i++) {
int v = bytes[i] & 0xFF;
hexChars[i * 2] = HEX_ARRAY[v >>> 4];
hexChars[i * 2 + 1] = HEX_ARRAY[v & 0x0F];
}
return new String(hexChars);
}
}
```
运行上面的代码,输出结果如下:
```
盐值:ec3a2c1c8b7b7a01e1a4d3e3f6f4e5c1
加密后的数据:a5c4bbb0c9d8c497544d8a2b9dcf0c0f
```
以上代码生成了一个长度为 16 字节的随机盐值,将数据和盐值拼接成新的字符串,再计算该字符串的 MD5 值,并输出盐值和加密后的数据。由于盐值是随机生成的,因此每次执行结果都会不同。
阅读全文