gpt4 book ai didi

Java messageDigest 时髦的输出

转载 作者:行者123 更新时间:2023-12-02 05:26:59 26 4
gpt4 key购买 nike

我正在使用 Java 的 MessageDigest 来做一个哈希项目。我想与随机生成的字符串产生的哈希值产生冲突。我已经验证我的字符串确实是随机的。然而,当我输出摘要时,由于某种原因,它总是以“[B@”开头,当我试图检测与 8 位的冲突时,显然一切都以“[”开头。这是我的代码:

public boolean encrypt(String x) throws Exception {
System.out.println("x is " + x);
java.security.MessageDigest d = java.security.MessageDigest.getInstance("SHA-1");
d.update(x.getBytes());
d.reset();
String result = d.digest().toString() + " ";
char[] tempCharArray = result.toCharArray();
String bitArray = "";
for(int i=0; i< tempCharArray.length; i++){
bitArray += String.format("%8s", Integer.toBinaryString(tempCharArray[i] &
0xff)).replace(' ', '0');
}

result = bitArray.substring(0,8);
return result;
}

有人以前见过这个/知道该怎么做才能正确吗?谢谢

最佳答案

您看起来在代码中做了一些奇怪的事情。

首先,你打电话;

String result = d.digest().toString()

..这将为您提供 string representation of a byte array object ,由类名、“@”符号和哈希码组成。 Arrays have a class name of "[B" ,因此你总是会得到以“[B@”开头的东西。

其次,您调用d.update(x.getBytes()),然后立即调用d.reset()。即使您解决了第一个问题,无论 x 的值如何,您都不会消化任何内容,因此您将始终得到相同的结果,the SHA-1 hash of an empty string ,即 da39a3ee5e6b4b0d3255bfef95601890afd80709

关于Java messageDigest 时髦的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25925222/

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