SHA-1 o Secure Hash Algorithm 1 es una función hash criptográfica que toma una entrada y produce un valor hash de 160 bits (20 bytes). Este valor hash se conoce como resumen de mensaje. Este resumen del mensaje generalmente se representa como un número hexadecimal de 40 dígitos. Es un estándar federal de procesamiento de información de los EE. UU. y fue diseñado por la Agencia de Seguridad Nacional de los Estados Unidos. SHA-1 ahora se considera inseguro desde 2005. Los navegadores de los principales gigantes tecnológicos como Microsoft, Google, Apple y Mozilla dejaron de aceptar certificados SSL SHA-1 en 2017. Para calcular el valor de hash criptográfico en Java, se usa MessageDigest Class , bajo el paquete java .seguridad . MessageDigest 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 de 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 un formato hexadecimal para obtener el MessageDigest esperado. Ejemplos:
Entrada : hola mundo Salida : 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed Entrada : GeeksForGeeks Salida : addf120b430021c36c232c99ef8d926aea2acd6b
El siguiente programa muestra la implementación del hash SHA-1 en Java.
Java
// Java program to calculate SHA-1 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-1 MessageDigest md = MessageDigest.getInstance("SHA-1"); // 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-1 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-1 for: GeeksForGeeks : addf120b430021c36c232c99ef8d926aea2acd6b hello world : 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
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