📅  最后修改于: 2023-12-03 15:16:22.781000             🧑  作者: Mango
在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()方法来获取生成的哈希码的可读文本表示形式。