Una función hash criptográfica es una clase excepcional de función hash que tiene ciertas propiedades que la hacen apropiada para su uso en criptografía. Es un algoritmo numérico que asigna información de tamaño autoafirmativo a una línea de pieza de un tamaño fijo (una función hash) que también pretende ser una función de salida unidireccional, es decir, una función que no es factible revertir.
módulo hashlib
Para calcular el valor hash criptográfico en Python, se utiliza el módulo «hashlib». El hashlib proporciona las siguientes funciones hash criptográficas para descubrir la salida hash de un texto de la siguiente manera:
- sha3_224 – Tamaño de resumen de 28 bits
- sha3_256 – Tamaño de resumen de 32 bits
- sha3_384 – Tamaño de resumen de 48 bits
- sha3_512 – Tamaño de resumen de 64 bits
Este módulo actualiza una interfaz típica para varios cálculos seguros de resumen de mensajes y hash. Se incluyen los cálculos de hash seguro FIPS SHA1, SHA224, SHA256, SHA384 y SHA512 al igual que el cálculo MD5 de RSA (caracterizado en Internet RFC 1321). Los cálculos anteriores se llamaban resúmenes de mensajes, pero hoy en día es hash seguro.
Python tiene una gran ayuda para los cálculos de código hash a través del módulo de biblioteca hashlib . Puede utilizar «hashlib.algorithms_disponible» para obtener el resumen de todos los cálculos de hash accesibles en su versión de Python.
Hashlib proporciona los siguientes atributos constantes:
- “hashlib.algorithms_guaranteed”: un conjunto que contiene todos los algoritmos hash que están garantizados para ser compatibles con este módulo en todas las plataformas.
- “hashlib.algorithms_disponible”: un conjunto que contiene todos los nombres de los algoritmos hash que están actualmente disponibles en el intérprete.
Python3
import hashlib print(hashlib.algorithms_guaranteed) print(hashlib.algorithms_available)
Producción :
{‘blake2b’, ‘shake_256’, ‘sha512’, ‘sha3_224’, ‘sha384’, ‘sha3_512’, ‘sha3_256’, ‘sha3_384’, ‘md5’, ‘sha256’, ‘sha224’, ‘sha1’, ‘ blake2s’, ‘shake_128’}
{‘SHA512’, ‘md5’, ‘blake2s’, ‘sha512’, ‘DSA-SHA’, ‘remolino’, ‘sha224’, ‘sha3_256’, ‘DSA’, ‘blake2b’, ‘MD5’, ‘SHA256’ , ‘ecdsa-con-SHA1’, ‘dsaWithSHA’, ‘sha384’, ‘md4’, ‘sha3_384’, ‘MD4’, ‘sha3_512’, ‘sha256’, ‘RIPEMD160’, ‘ripemd160’, ‘shake_256’, ‘ SHA’, ‘sha3_224’, ‘dsaEncryption’, ‘SHA224’, ‘sha’, ‘SHA1’, ‘sha1’, ‘shake_128’, ‘SHA384’}
Atributos constantes
- hash.digest_size: el tamaño del hash posterior en bytes.
- hash.block_size: el tamaño del cuadrado interior del cálculo hash en bytes.
- hash.name : El nombre aprobado de este hash, consistentemente en minúsculas y siempre apropiado como límite para new() para hacer otro hash de este tipo.
Métodos en hashlib
- hash.update(data): actualiza el objeto hash con el objeto similar a bytes.
- hash.digest(): Retorna la condensación de la información que fue al método update() hasta ahora. Este es un objeto de bytes de tamaño digest_size y puede contener bytes que varían en número de 0 a 255.
- hash.hexdigest(): como digest() aparte del resumen, se devuelve como un objeto de string de doble longitud, que contiene solo dígitos hexadecimales.
- hash.copy(): Devuelve un duplicado («clon») del objeto hash. Esto se puede utilizar para calcular efectivamente las descripciones generales de la información que comparte una substring inicial típica.
SHAKE resúmenes de longitud variable
- shake.digest(longitud): Devuelve la condensación de la información pasada a la función update(). Este es un objeto de bytes de tamaño que puede contener bytes en todo el rango de 0 a 255.
- shake.hexdigest(longitud): Al igual que la descripción general(), aparte de la condensación, se devuelve como un objeto de string de longitud doble, que contiene solo dígitos hexadecimales.
SHA – un resumen
Los Algoritmos Hash Seguros son un grupo de funciones hash criptográficas propuestas por el Instituto Nacional de Estándares y Tecnología (NIST) e incluyen:
- SHA-0: Una palabra aplicada a la primera forma de la función hash de 160 bits producida en 1993 bajo el nombre “SHA”. Se retiró poco después de la producción debido a una «imperfección notable» no revelada y se reemplazó por la variante SHA-1 marginalmente revisada.
- SHA-1: una función hash de 160 bits que se parece al MD5 anterior. Esto fue planeado por la Agencia de Seguridad Nacional (NSA) para ser esencial para el algoritmo de firma digital. Se encontraron deficiencias criptográficas en SHA-1 y, en este momento, el estándar no estaba respaldado para la mayoría de los usos criptográficos después de 2010.
- SHA-2: Un grupo de dos funciones hash comparativas, con varios tamaños de bloque, conocidas como SHA-256 y SHA-512, contrastan en el tamaño de palabra; Las utilizaciones de SHA-256 son de palabras de 32 bytes, mientras que las de SHA-512 son de palabras de 64 bytes.
- SHA-3: una función hash, anteriormente llamada Keccak , seleccionada en 2012 después de una rivalidad pública entre los creadores que no pertenecen a la NSA. Soporta longitudes de hash similares a SHA-2, y su estructura interna varía por completo del resto de la familia SHA.
Implementación SHA-3
Secure Hash Algorithm-3, también llamado Keccak, es un método unidireccional para crear impresiones computarizadas de la longitud dada de acuerdo con los estándares como 224, 256, 384 o 512 piezas a partir de información de entrada de cualquier tamaño, creada por una reunión de creadores dirigidos por Yoan Dimen en 2008 y adoptado en 2015 como el nuevo estándar FIPS. El cálculo funciona por métodos para la capacidad de mezcla con compresión al tamaño elegido «esponja criptográfica».
Ejemplos:
Entrada: HolaMundo
Salida[sha3_224]: c4797897c58a0640df9c4e9a8f30570364d9ed8450c78ed155278ac0
Entrada: HolaMundo
Salida[sha3_256]: 92dad9443e4dd6d70a7f11872101ebff87e21798e4fbb26fa4bf590eb440e71b
Entrada: HolaMundoSalida[sha3_384]: dc6104dc2caff3ce2ccecbc927463fc3241c8531901449f1b1f4787394c9b3aa55a9e201d0bb0b1b7d7f8892bc127216
Entrada: HolaMundo
Salida [sha3_512]: 938315ec7b0e0bcac648ae6f732f67e00f9c6caa3991627953434a0769b0bbb15474a429177013ed8a7e48990887d1e19533687ed2183fd2b6054c2e882
Los siguientes programas muestran la implementación del hash SHA-3 en Python-3.8 usando diferentes métodos: Implementación de sha3_224 usando el método de actualización
Python3
import sys import hashlib if sys.version_info < (3, 6): import sha3 # initiating the "s" object to use the # sha3_224 algorithm from the hashlib module. s = hashlib.sha3_224() # will output the name of the hashing algorithm currently in use. print(s.name) # will output the Digest-Size of the hashing algorithm being used. print(s.digest_size) # providing the input to the hashing algorithm. s.update(b"GeeksforGeeks") print(s.hexdigest())
sha3_224 28 11c044e8080ed87b3cf0643bc5880a38ae62dd4562390700000b1191
Implementación de sha3_256 usando el método de codificación
Python3
# import the library module import sys import hashlib if sys.version_info < (3, 6): import sha3 # initialize a string str = "GeeksforGeeks" # encode the string encoded_str = str.encode() # create sha3-256 hash objects obj_sha3_256 = hashlib.sha3_256(encoded_str) # print in hexadecimal print("\nSHA3-256 Hash: ", obj_sha3_256.hexdigest())
Producción:
Hash SHA3-256: b05a48e99c60983b96b5a69efad8bb44e586702d484d43e592ab639ef64641ff
Implementación de sha3_384
Python3
# import the library module import sys import hashlib if sys.version_info < (3, 6): import sha3 # initialize a string str = "GeeksforGeeks" # encode the string encoded_str = str.encode() # create sha3-384 hash objects obj_sha3_384 = hashlib.sha3_384(encoded_str) # print in hexadecimal print("\nSHA3-384 Hash: ", obj_sha3_384.hexdigest())
Producción:
Hash SHA3-384: b92ecaafd00472daa6d619b68010b5f66da7c090e32bd4f5a6b60899e8de3e2c859792ec07a33775cfca8d05c64f222
Implementación de sha3_512 usando el nuevo método
Python3
import sys import hashlib if sys.version_info < (3, 6): import sha3 str = "GeeksforGeeks" # create a sha3 hash object hash_sha3_512 = hashlib.new("sha3_512", str.encode()) print("\nSHA3-512 Hash: ", hash_sha3_512.hexdigest())
Producción:
Hash SHA3-512: 3706a96a8fa96b3fc5ff30cbca36ce666042e2d07762022a78a2ec82439848fc3695e83336ab71f47dddbc24b96454df2a437e343801a4e13faab89e8d0fda61
Aplicaciones de algoritmos hash:
- Resumen del mensaje
- Verificación de contraseña
- Estructuras de datos (lenguajes de programación)
- Operación del compilador
- Algoritmo de Rabin-Karp
- Vincular el nombre del archivo y la ruta juntos
Publicación traducida automáticamente
Artículo escrito por shivaysabharwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA