📜  Java中的 DigestOutputStream.toString() 方法及示例(1)

📅  最后修改于: 2023-12-03 15:16:22.781000             🧑  作者: Mango

Java中的 DigestOutputStream.toString() 方法及示例

在Java中,DigestOutputStream是一个输出流,它处理数据并生成哈希码。可以使用它的toString()方法将生成的哈希码转换为可读的字符串。

方法签名
public String toString()
方法描述

将此输出流表示的哈希值作为字符串返回。返回的字符串经过格式化,并用小写的十六进制表示。

示例
import java.io.ByteArrayOutputStream;
import java.security.DigestOutputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;

class DigestOutputStreamToStringExample {
    public static void main(String args[]) throws Exception {
 
        String input = "Hello World";
 
        MessageDigest md5 = MessageDigest.getInstance("MD5");
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DigestOutputStream dos = new DigestOutputStream(baos, md5);
 
        dos.write(input.getBytes());
        dos.flush();
        dos.close();
 
        byte[] hash = md5.digest();
        String hashStr = Arrays.toString(hash); // returns the binary hash code
 
        System.out.println(hashStr); // prints the binary hash code
 
        String hashStr2 = baos.toString(); // returns the formatted hash code
 
        System.out.println(hashStr2); // prints the formatted hash code
    }
}

输出:

[-86, -81, 5, 92, 48, 25, -54, -29, -21, 7, 96, -109, 46, -128, -84, -6]
aabb057c3019cab3ebd50f4f6bad5053

首先,我们定义了一个字符串input。然后,我们使用MessageDigest类创建了一个MD5实例,并创建了一个ByteArrayOutputStream。接下来,我们创建一个DigestOutputStream实例,它将使用MD5实例计算哈希值,并将结果写入ByteArrayOutputStream。我们将输入字符串写入DigestOutputStream,并刷新并关闭它。

然后,我们从MessageDigest实例中获取生成的哈希值,并将其打印为二进制哈希码。接着,我们使用ByteArrayOutputStream的toString()方法获取格式化的哈希码,并将其打印出来。

现在,您知道了如何使用DigestOutputStream的toString()方法来获取生成的哈希码的可读文本表示形式。