如何在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个字符的哈希的主要内容,如果未能解决你的问题,请参考以下文章

windows 查看文件 MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512码

python基础整理笔记

SHA家族

SHA家族

Python中hashlib模块

Windows10计算文件SHA1 SHA256 SHA384 SHA512 or MD5