Python Forensics - Función hash

UN hash functionse define como la función que asigna una gran cantidad de datos a un valor fijo con una longitud específica. Esta función asegura que la misma entrada dé como resultado la misma salida, que en realidad se define como una suma hash. La suma hash incluye una característica con información específica.

Esta función es prácticamente imposible de revertir. Por lo tanto, cualquier ataque de terceros como un ataque de fuerza bruta es prácticamente imposible. Además, este tipo de algoritmo se llamaone-way cryptographic algorithm.

Una función hash criptográfica ideal tiene cuatro propiedades principales:

  • Debe ser fácil calcular el valor hash para cualquier entrada dada.
  • Debe ser inviable generar la entrada original a partir de su hash.
  • Debe ser inviable modificar la entrada sin cambiar el hash.
  • Debe ser inviable encontrar dos entradas diferentes con el mismo hash.

Ejemplo

Considere el siguiente ejemplo que ayuda a hacer coincidir las contraseñas utilizando caracteres en formato hexadecimal.

import uuid
import hashlib
  
def hash_password(password):
   # userid is used to generate a random number
   salt = uuid.uuid4().hex #salt is stored in hexadecimal value
   return hashlib.sha256(salt.encode() + password.encode()).hexdigest() + ':' + salt
     
def check_password(hashed_password, user_password):
   # hexdigest is used as an algorithm for storing passwords
   password, salt = hashed_password.split(':')
   return password == hashlib.sha256(salt.encode()
      + user_password.encode()).hexdigest()

new_pass = raw_input('Please enter required password ')
hashed_password = hash_password(new_pass)
print('The string to store in the db is: ' + hashed_password)
old_pass = raw_input('Re-enter new password ')

if check_password(hashed_password, old_pass):
   print('Yuppie!! You entered the right password')
else:
   print('Oops! I am sorry but the password does not match')

Diagrama de flujo

Hemos explicado la lógica de este programa con la ayuda del siguiente diagrama de flujo:

Salida

Nuestro código producirá el siguiente resultado:

La contraseña ingresada dos veces coincide con la función hash. Esto asegura que la contraseña ingresada dos veces sea precisa, lo que ayuda a recopilar datos útiles y guardarlos en un formato cifrado.