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
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:
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. 🙂
Buenas noches,
Como podría iniciarme en temas de firma digital?
Firmar un documento con python.
De anemano, gracias.