gpt4 book ai didi

java - 如何在 Java 中使用 SHA384 生成 48 个字符的哈希

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:47:15 24 4
gpt4 key购买 nike

我正在尝试使用 SHA384 在 Java 中生成一个 48 个字符的哈希字符串,输出应如下所示:

PÊ&¿ a»@óæS0iÛ6në0Ê`o€X·„\KÃò¢ï¼fÖ…)nE@ó^s

我目前的实现如下:

public static String getHash(byte[] inputBytes, String algorithm) throws Exception{
String hashValue = "";
try {
MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
messageDigest.update(inputBytes);
byte[] digestedBytes = messageDigest.digest();
hashValue =
DatatypeConverter.printHexBinary(digestedBytes).toLowerCase();
} catch(Exception e) {
e.printStackTrace();
}
return hashValue;
}

public static void main(String[] args) throws Exception {
System.out.println(getHash("The quick brown fox Jumps over the lazy dog".getBytes(), "SHA-384"));
}

输出:

b94a2179d90daf662f2ae8e41f92c2831eb0eea5a352f81ac7b0a80a07b2c357d88d0e3fc12bf4f0d888335508b09c41

正如观察到的那样,输出字符串是 96 个字符的字符串而不是 48 个,我做错了什么?

最佳答案

你可以尝试这样的事情:

import java.security.MessageDigest;
public class Main {
public static String getHash(byte[] inputBytes, String algorithm) throws Exception{
try {
MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
messageDigest.update(inputBytes);
byte[] digestedBytes = messageDigest.digest();
return new String(digestedBytes, "UTF-8");
} catch(Exception e) {
e.printStackTrace();
}
return null;
}

public static void main(String[] args) throws Exception {
System.out.println(getHash("The quick brown fox Jumps over the lazy dog".getBytes(), "SHA-384"));
}
}

这会将您的 48 字节数组转换为使用 UTF-8 编码的字符串。但是,并非所有字节都代表可打印字符,因此您最终会得到一个字符略少的字符串。

关于java - 如何在 Java 中使用 SHA384 生成 48 个字符的哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50965320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com