Java SHA-256 程序提供了错误的哈希值
Java SHA-256 Program provides wrong Hash
我在 Hackerrank.com 上解决挑战,我遇到了关于 java SHA-256 加密哈希函数的挑战。 here
我写了下面的一段代码作为解决方案。但是我的解决方案的一些测试用例失败了。希望知道我的代码有什么问题。
public class Solution {
public static String toHexString(byte[] hash)
{
BigInteger number = new BigInteger(1, hash);
StringBuilder hexString = new StringBuilder(number.toString(16));
while (hexString.length() < 32)
{
hexString.insert(0, '0');
}
return hexString.toString();
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.next();
try
{
MessageDigest md = MessageDigest.getInstance("SHA-256");
System.out.println(toHexString(md.digest(input.getBytes(StandardCharsets.UTF_8))));
}
// For specifying wrong message digest algorithms
catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
}
这是一个失败的测试用例。
一个 32 字节的散列表示一个 64 个字符的字符串。每个字节包含 2 个十六进制数字,因此每个字节需要 2 个字符:
while (hexString.length() < 64)
{
hexString.insert(0, '0');
}
我在 Hackerrank.com 上解决挑战,我遇到了关于 java SHA-256 加密哈希函数的挑战。 here
我写了下面的一段代码作为解决方案。但是我的解决方案的一些测试用例失败了。希望知道我的代码有什么问题。
public class Solution {
public static String toHexString(byte[] hash)
{
BigInteger number = new BigInteger(1, hash);
StringBuilder hexString = new StringBuilder(number.toString(16));
while (hexString.length() < 32)
{
hexString.insert(0, '0');
}
return hexString.toString();
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.next();
try
{
MessageDigest md = MessageDigest.getInstance("SHA-256");
System.out.println(toHexString(md.digest(input.getBytes(StandardCharsets.UTF_8))));
}
// For specifying wrong message digest algorithms
catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
}
这是一个失败的测试用例。
一个 32 字节的散列表示一个 64 个字符的字符串。每个字节包含 2 个十六进制数字,因此每个字节需要 2 个字符:
while (hexString.length() < 64)
{
hexString.insert(0, '0');
}