给我一个用SHA-256将字符串压缩到128位的代码java预研
时间: 2024-03-05 21:49:33 浏览: 85
以下是一个用Java实现SHA-256压缩字符串到128位的代码:
```java
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class SHA256Example {
public static void main(String[] args) throws NoSuchAlgorithmException {
String input = "example";
byte[] hash = getSHA256(input);
String hexHash = bytesToHex(hash);
System.out.println(hexHash);
}
public static byte[] getSHA256(String input) throws NoSuchAlgorithmException {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
return digest.digest(input.getBytes(StandardCharsets.UTF_8));
}
public static String bytesToHex(byte[] bytes) {
StringBuilder hexString = new StringBuilder();
for (byte b : bytes) {
String hex = Integer.toHexString(0xff & b);
if (hex.length() == 1) hexString.append('0');
hexString.append(hex);
}
return hexString.toString().substring(0, 32); // 只取前128位
}
}
```
这个代码使用Java的MessageDigest类来计算SHA-256哈希值,并使用bytesToHex方法将哈希值转换为16进制字符串。在这个例子中,输入字符串是"example",输出的哈希值应该是"3f9f6b4cb0f528ff3a8f347d4c9d6bc7",这是一个128位的SHA-256哈希值。
阅读全文