Avishka Kavindu B. Dambawinna:
Yo estaba resolviendo desafíos en Hackerrank.com y me encontré con este desafío de las funciones hash criptográficas java SHA-256. aquí
Escribí el siguiente fragmento de código como una solución. Sin embargo, algunos casos de prueba están fallando para mi solución. Con la esperanza de saber lo que está mal en mi código.
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.nio.charset.StandardCharsets;
import java.math.BigInteger;
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);
}
}
}
pero_hero :
un hash de 32 bytes significa una cadena de 64 caracteres que para cualquier byte necesita 2 caracteres:
while (hexString.length() < 64)
{
hexString.insert(0, '0');
}