Hash de texto en python; sha256

sha 256 en Python
Hash de texto en python

Hashes en Python Parte 1: Sha256

En ciertas ocasiones nos topamos con que necesitamos manejar cuentas de usuario o algún otro dato sensible que necesite ser almacenado o transmitido por algún programa o script, es en estas ocasiones en  las que nos ponemos a pensar en diversas maneras de encriptar los datos, pero esto implica capacidad de computo extra y en ciertas ocasiones la verdad es que no nos podemos dar el lujo de hacerlo, entonces salta en nuestra mente la tan vieja y extendida técnica de utilizar una función hash para almacenar el resultado correspondiente al valor de los datos y NO en texto plano y bruto, esto es útil para almacenar nombres, contraseñas, números o códigos de verificación, entre otras... 

Pero, ¿Qué es una función Hash?

Su nombre proviene de las palabras en ingles "Picar y Mezclar", una función hash es básicamente un proceso criptográfico generado por un algoritmo dedicado a ello, pero se diferencia de el resto de métodos criptográficos en que este no puede descifrarse, es decir con este método no es posible (en teoría) devolver el valor original del valor dado.

¿Entonces por qué usarlo?

Una función hash básicamente crea una firma digital de un archivo o cadena de texto, es útil para almacenar datos sensibles ya que el Hash para la contraseña supuesta "Hola" seria conjunto de varios caracteres aparentemente al azar

Hola=b221d9dbb083a7f33428d7c2a3c3198ae925614d70210e28716ccaa7cd4ddb79


cada vez que tu usuario escriba la contraseña supuesta "Hola" Obtendrá el mismo hash por resultado comprobando así que la contraseña sea correcta y en caso de alguien acceder a esos datos se toparía con una cadena Hash y no con el valor original lo que dificultaría la obtención final de la contraseña.

Es genial!  ¿Cómo puedo utilizarlo?

Bien, por fortuna quienes día a día aprendemos e intentamos sumergirnos mas y mas en Python contamos con una útil librería dedicada a la creación de hashes de texto, en este ejemplo vamos a imprimir en pantalla el resultado del nombre de nuestro querido blog "PythonDiario"
La Librería mencionada es "hashlib", Con un nombre que no puede ser mas obvio importamos:
import hashlib

print hashlib.sha256(raw_input("ingresa ")).hexdigest()

¿Pero, Como asi?

primero indicamos que vamos a imprimir el resultado que nos arroje la palabra o cadena ingresada haciendo uso del modulo sha256 dentro de la librería hashlib, esto almacena en memoria el resultado y por ultimo con  .hexdigest() se muestra en pantalla el valor devuelto.

Siendo el valor resultante: d7d029e00c52353446a5e836429129e965d047cb0237dd1aaa348776c06ddcd7
para el valor original: PythonDiario

Nota:
Si omites .hexdigest() e imprimes en pantalla el resultado sera muy distinto de lo esperado, siendo en mi caso el siguiente:

<sha256 HASH object @ 0x7f3b65553f30>

Como siempre los aportes y/o correcciones son bienvenidos, el conocimiento colectivo nos hace comunidad. 🙂

dcaraballo

Creador de @PythonDiario, amante de la Tecnología y la Naturaleza. Programador Python, C# . NET

  1. Unknown dice:

    Buenas noches,
    Como podría iniciarme en temas de firma digital?
    Firmar un documento con python.
    De anemano, gracias.

Deja una respuesta

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

Subir
White Monkey