La familia SHA-2 de funciones hash criptográficas consta de seis funciones hash. Estos son:
- SHA-224, con valores hash de 224 bits
- SHA-256, con valores hash de 256 bits
- SHA-384, con valores hash de 384 bits
- SHA-512, con valores hash de 512 bits
- SHA-512/224, con valores hash de 512 bits
- SHA-512/256, con valores hash de 512 bits
Entre estos, SHA-256 y SHA-512 son las funciones hash más comúnmente aceptadas y utilizadas calculadas con palabras de 32 bits y 64 bits, respectivamente. SHA-224 y SHA-384 son versiones truncadas de SHA-256 y SHA-512 respectivamente, calculadas con diferentes valores iniciales.
Para calcular el valor hash criptográfico en Java, se usa MessageDigest Class , bajo el paquete java.security .
MessagDigest Class proporciona la siguiente función hash criptográfica para encontrar el valor hash de un texto de la siguiente manera:
- MD2
- MD5
- SHA-1
- SHA-224
- SHA-256
- SHA-384
- SHA-512
Estos algoritmos se inicializan en un método estático llamado getInstance() . Después de seleccionar el algoritmo, se calcula el valor del resumen del mensaje y los resultados se devuelven como una array de bytes. Se utiliza la clase BigInteger para convertir la array de bytes resultante en su representación signum. Esta representación luego se convierte a formato hexadecimal para obtener el MessageDigest esperado.
Ejemplos:
Entrada : hola mundo
Salida : 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76fEntrada : GeeksForGeeks
Salida : acc10c4e0b38617f59e88e49215e2e894afaee5ec948c2af6f44039f03c9fe47a9210e01d5cd926c142bdc9179c2ad30f927a8faf69421ff60a5eaddcf8cb9ca
Programa: El siguiente programa muestra la implementación de la función hash SHA-512:
// Java program to calculate SHA-512 hash value import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class GFG { public static String encryptThisString(String input) { try { // getInstance() method is called with algorithm SHA-512 MessageDigest md = MessageDigest.getInstance("SHA-512"); // digest() method is called // to calculate message digest of the input string // returned as array of byte byte[] messageDigest = md.digest(input.getBytes()); // Convert byte array into signum representation BigInteger no = new BigInteger(1, messageDigest); // Convert message digest into hex value String hashtext = no.toString(16); // Add preceding 0s to make it 32 bit while (hashtext.length() < 32) { hashtext = "0" + hashtext; } // return the HashText return hashtext; } // For specifying wrong message digest algorithms catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } } // Driver code public static void main(String args[]) throws NoSuchAlgorithmException { System.out.println("HashCode Generated by SHA-512 for: "); String s1 = "GeeksForGeeks"; System.out.println("\n" + s1 + " : " + encryptThisString(s1)); String s2 = "hello world"; System.out.println("\n" + s2 + " : " + encryptThisString(s2)); } }
HashCode Generated by SHA-512 for: GeeksForGeeks : acc10c4e0b38617f59e88e49215e2e894afaee5 ec948c2af6f44039f03c9fe47a9210e01d5cd926c142bdc9179c2ad 30f927a8faf69421ff60a5eaddcf8cb9c hello world : 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee5 11a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cf d830e81f605dcf7dc5542e93ae9cd76f
Solicitud:
- Criptografía
- Integridad de los datos
Publicación traducida automáticamente
Artículo escrito por RishabhPrabhu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA