SHA en Python

SHA, (algoritmos hash seguros) son un conjunto de funciones hash criptográficas definidas por el lenguaje que se utilizará para diversas aplicaciones, como seguridad de contraseña, etc. Algunas variantes son compatibles con Python en la biblioteca » hashlib «. Estos se pueden encontrar usando la función «algorithms_guaranteed» de hashlib.

# Python 3 code to check 
# available algorithms
  
import hashlib
  
# prints all available algorithms
print ("The available algorithms are : ", end ="")
print (hashlib.algorithms_guaranteed)

Producción:

The available algorithms are : {'sha256', 'sha384', 'sha224', 'sha512', 'sha1', 'md5'}

Para continuar, analicemos primero las funciones que se utilizarán en este artículo.

Funciones asociadas:

  • codificar(): convierte la string en bytes para que sea aceptable para la función hash.
  • hexdigest() : Devuelve los datos codificados en formato hexadecimal.
Hachís SHA

Las diferentes funciones hash SHA se explican a continuación.

  • SHA256: esta función hash pertenece a la clase hash SHA-2, el tamaño de bloque interno es de 32 bits.
  • SHA384: esta función hash pertenece a la clase hash SHA-2, el tamaño de bloque interno es de 32 bits. Esta es una de las versiones truncadas.
  • SHA224: esta función hash pertenece a la clase hash SHA-2, el tamaño de bloque interno es de 32 bits. Esta es una de las versiones truncadas.
  • SHA512: esta función hash pertenece a la clase hash SHA-2, el tamaño de bloque interno es de 64 bits.
  • SHA1: la función hash de 160 bits que se asemeja al hash MD5 en el funcionamiento y se suspendió debido a sus vulnerabilidades de seguridad.

El siguiente código implementa estas funciones hash.

# Python 3 code to demonstrate
# SHA hash algorithms.
  
import hashlib
  
# initializing string
str = "GeeksforGeeks"
  
# encoding GeeksforGeeks using encode()
# then sending to SHA256()
result = hashlib.sha256(str.encode())
  
# printing the equivalent hexadecimal value.
print("The hexadecimal equivalent of SHA256 is : ")
print(result.hexdigest())
  
print ("\r")
  
# initializing string
str = "GeeksforGeeks"
  
# encoding GeeksforGeeks using encode()
# then sending to SHA384()
result = hashlib.sha384(str.encode())
  
# printing the equivalent hexadecimal value.
print("The hexadecimal equivalent of SHA384 is : ")
print(result.hexdigest())
  
print ("\r")
  
# initializing string
str = "GeeksforGeeks"
  
# encoding GeeksforGeeks using encode()
# then sending to SHA224()
result = hashlib.sha224(str.encode())
  
# printing the equivalent hexadecimal value.
print("The hexadecimal equivalent of SHA224 is : ")
print(result.hexdigest())
  
print ("\r")
  
# initializing string
str = "GeeksforGeeks"
  
# encoding GeeksforGeeks using encode()
# then sending to SHA512()
result = hashlib.sha512(str.encode())
  
# printing the equivalent hexadecimal value.
print("The hexadecimal equivalent of SHA512 is : ")
print(result.hexdigest())
  
print ("\r")
  
# initializing string
str = "GeeksforGeeks"
  
# encoding GeeksforGeeks using encode()
# then sending to SHA1()
result = hashlib.sha1(str.encode())
  
# printing the equivalent hexadecimal value.
print("The hexadecimal equivalent of SHA1 is : ")
print(result.hexdigest())

Producción:

The hexadecimal equivalent of SHA256 is : 
f6071725e7ddeb434fb6b32b8ec4a2b14dd7db0d785347b2fb48f9975126178f

The hexadecimal equivalent of SHA384 is : 
d1e67b8819b009ec7929933b6fc1928dd64b5df31bcde6381b9d3f90488d253240490460c0a5a1a873da8236c12ef9b3

The hexadecimal equivalent of SHA224 is : 
173994f309f727ca939bb185086cd7b36e66141c9e52ba0bdcfd145d

The hexadecimal equivalent of SHA512 is : 
0d8fb9370a5bf7b892be4865cdf8b658a82209624e33ed71cae353b0df254a75db63d1baa35ad99f26f1b399c31f3c666a7fc67ecef3bdcdb7d60e8ada90b722

The hexadecimal equivalent of SHA1 is : 
4175a37afd561152fb60c305d4fa6026b7e79856

Explicación: el código anterior toma una string y la convierte en el byte equivalente usando encode() para que pueda ser aceptado por la función hash. Las funciones hash SHA lo codifican y luego, usando hexdigest(), se imprime una string codificada hexadecimal equivalente.

Publicación traducida automáticamente

Artículo escrito por suman_709 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 *