如何在Java中使用SHA384生成48个字符的哈希
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Java中使用SHA384生成48个字符的哈希相关的知识,希望对你有一定的参考价值。
我正在尝试使用SHA384
在Java中生成48个字符的哈希字符串,输出应该如下所示:
PÊ&¿»»@óæ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"));
}
输出:
下午4点,下午1点,下午0点,下午41点,下午1点,下午0点,下午0点,下午7点,参观工作,拍摄照片,拍摄照片,拍摄照片
如上所述,输出字符串是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"));
}
}
这会使用UTF-8编码将您的48字节数组转换为String。但是,并非所有字节都代表可打印字符,因此您最终会得到一个字符数稍少的字符串。
另一答案
package com.journaldev.examples;
import java.util.UUID;
/**
* Java UUID randomUUID Example
*
*/
public class UUIDExample {
public static void main(String[] args) {
//initialize uuid
UUID uuid = UUID.randomUUID();
System.out.println(uuid);
}
}
试试这个来生成随机id
以上是关于如何在Java中使用SHA384生成48个字符的哈希的主要内容,如果未能解决你的问题,请参考以下文章