Hachís SHA-1

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));
    }
}
Producción:

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *