java sha256加解密
时间: 2023-09-28 08:07:52 浏览: 48
Java中可以通过MessageDigest类来实现SHA-256加密。
以下是一个SHA-256加密的示例代码:
```
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class SHA256Example {
public static void main(String[] args) throws NoSuchAlgorithmException {
String input = "hello world";
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
byte[] hash = messageDigest.digest(input.getBytes());
String hexHash = bytesToHex(hash);
System.out.println("Input: " + input);
System.out.println("SHA-256 Hash: " + hexHash);
}
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);
}
}
```
输出结果:
```
Input: hello world
SHA-256 Hash: 2C74FD17EDAFD80E8447B0D46741EE243B7EB74DD2149A0AB1B9246FB30382F1
```
解释一下代码:
1. 首先定义了一个字符串输入`input`。
2. 然后通过`MessageDigest.getInstance("SHA-256")`获取SHA-256算法的MessageDigest对象。
3. 调用`digest`方法获取加密后的字节数组`hash`。
4. 最后通过`bytesToHex`方法将字节数组转换为十六进制字符串`hexHash`。
5. 输出结果。
需要注意的是,当使用SHA-256算法进行加密时,加密结果的长度为256位,即32个字节,因此输出的十六进制字符串长度为64个字符。
阅读全文