Python Hashlib MD5

Python Hashlib MD5
Las funciones hash son métodos/funciones que pueden aceptar datos de diferentes tamaños como el mensaje de entrada y salida de hash o digest, que son datos cifrados de un tamaño definido. La integridad de los datos se puede evaluar utilizando este valor. Una función hash criptográfica incluye el hash MD5. Se agrega un valor hash a cada paquete de datos antes de que se envíe o se transmita a través de Internet. El servidor calcula el hash cuando se reciben los datos y lo verifica/lo verifica con el valor hash vinculado/conectado. Los paquetes de datos solo se aceptan si el valor hash transmitido y el valor hash adjunto son los mismos. De lo contrario, indica que los datos han cambiado. Este cambio puede ser resultado de la pérdida de datos, manipulación de datos, errores de ruido o por un tercero. En este tutorial, enseñaremos el uso y el funcionamiento del hash MD5 en Python.

¿Qué es el hash MD5 en Python??

Uno de los métodos hash proporcionados por el módulo Hashlib de Python es MD5 Hash. Para realizar los cálculos hash, se usa principalmente en funciones criptográficas. Hash también se puede utilizar para crear cachés de conjuntos de datos masivos, verificar contraseñas, verificar las huellas digitales, verificar la integridad de los archivos, etc. Toma una cadena de byte como entrada y emite una cadena hexadecimal como el valor codificado. Se produce un valor hash de 128 bits al codificar los datos de cadena a un hash MD5. Debe tener cuidado al elegir el personaje que codifica para convertir los datos de texto a binarios antes del hash porque los algoritmos de hash a menudo funcionan con datos binarios en lugar de datos textuales. El hash también da como resultado datos binarios.

Las funciones asociadas con el hash MD5 son:

codificar(): Crea bytes de la cadena para que la función hash pueda usarlos.

digerir(): Devuelve los datos codificados o encriptados en forma de bytes.

hexdigest (): El formato hexadecimal de los datos codificados se devuelve utilizando esta función.

Ventajas de MD5

  • Las hashes más pequeñas se pueden comparar y almacenarse más fácilmente usando MD5 que los textos más grandes de diferentes longitudes.
  • Las contraseñas se guardan/almacenan en el formato de 128 bits utilizando el algoritmo MD5.
  • Cada paquete de datos agrega un valor hash antes de la transmisión de datos. Puede buscar la corrupción de archivos una vez que el servidor reciba los datos. La verificación de integridad de archivos es válida siempre que las hashes coincidan para evitar una corrupción de datos.
  • Usando MD5, se puede generar simplemente un mensaje de mensaje a partir de un mensaje original.

Cómo usar el hash MD5 en Python?

Cómo obtener MD5 de objetos y archivos de cadena se demuestran en la siguiente sección.

Calcular el valor hash MD5 de una cadena

Calcular el valor hash de un objeto de cadena en Python generalmente implica cuatro pasos:

  1. Crear o cargar un valor de cadena.
  2. Convertir la cuerda en bytes.
  3. Cifrar los datos en bytes en el valor del hash MD5.
  4. Muestre o devuelva los datos en forma de bytes (usando digest ()) o en forma de hexadecimal (usando hexdigest ()).

La variable de cadena "cadena" se define con la codificación binaria en el script anterior. El "hashlib.Por lo tanto, el método MD5 ”se puede usar para cifrar la cadena directamente. La salida codificada se muestra utilizando la función Digest. Una cadena binaria no siempre está disponible como entrada. En tales escenarios, primero debe convertir los datos en una secuencia binaria antes de pasarlos al algoritmo de hash MD5.

Ahora miramos algunos ejemplos para calcular el hash MD5 de un objeto de cadena.

Ejemplo 1: Impresión de los datos de cadena en bytes equivalentes al hash MD5

Para usar la función MD5, primero tenemos que importar el módulo Hashlib. Pase los datos de una cadena dentro de la función MD5. Luego, imprimimos en forma de valor hash MD5, así como en forma de bytes.

La función hash puede aceptar los bytes como entrada. Por lo tanto, pasamos las cadenas como bytes a la función MD5 () en el código anterior. El método hash MD5 cifra los datos suministrados. Finalmente, usamos la función Digest () para generar el equivalente de bytes de la cadena codificada con hash MD5.

Ejemplo 2: Impresión de los datos de cadena en hexadecimal equivalente al hash MD5

Ahora, imprimimos los datos en hexadecimal después de codificarlos en el hash MD5. En el ejemplo anterior, usamos "B" justo antes del valor de la cadena para codificar la cadena en bytes. Aquí, aplicamos la función code () en la cadena para codificarla. Ambos enfoques producen resultados idénticos. Sin embargo, podemos especificar el formato de codificación de nuestra elección con la ayuda de la función code ().

Aquí, usamos la función code () para transformar los datos de cadena especificados en un byte para que pueda pasar a una función hash que lo aceptaría. Luego, está codificado con la función MD5. Finalmente, su valor hexadecimal se devuelve utilizando el método hexidest ().

Calculando el valor hash MD5 de un archivo

El módulo incorporado Hashlib de Python también se puede usar para crear el hash MD5 de un archivo

Ejemplo 1: El valor hash MD5 de un archivo pequeño en Python

Debe tener en cuenta que simplemente especificar un nombre de archivo dentro del hashlib.La función md5 (), como en el siguiente ejemplo, no devuelve el valor hash del archivo.

El valor devuelto no es el hash MD5 de nuestro archivo. Pero es el valor de hash MD5 del "Python.cadena txt ".

Para obtener el valor de hash MD5 correcto del archivo, primero debe leer el archivo en bytes. Es fácil, todo lo que tenemos que hacer es leer el contenido del archivo y convertirlo en bytes. El byte se pasa a Hashlib.MD5 () para obtener el valor de hash MD5.

Como se puede ver, la función calcula el valor de hash MD5 del archivo correctamente.

Ejemplo 2: El valor hash MD5 de un archivo grande en Python

Si el archivo tiene un tamaño de 10 GB, supongamos que es un archivo de registro grande, un volcado de tráfico, un videojuego, etc., probablemente usaría toda su memoria si intenta crear un hash MD5 de él. En tal caso, podemos leer los archivos grandes en fragmentos de bytes, que es una forma eficiente en la memoria de calcular hashes MD5. El tamaño de los fragmentos depende de su requisito, el tamaño de su archivo, la memoria de su sistema, etc. Por lo tanto, en este procedimiento, procesamos secuencialmente los fragmentos al tiempo que actualizamos el hash. Como resultado, el hash MD5 se actualiza 100 veces durante este proceso, si hay 100 de tales fragmentos de archivo.

Leemos los datos en fragmentos utilizando la ayuda de un bucle de tiempo mientras el valor de hash MD5 se actualiza utilizando la función Update ().

Compare y valida el hash MD5 de un archivo

En el servidor o utilizando una lógica en su código, debemos validar el hash MD5 de los datos o el archivo. Creamos el hash MD5 del archivo original nuevamente para verificar el hash. Después de eso, compare los valores de MD5 que generan la fuente y los Estados Unidos.

Como ambos valores, el valor de Source_MD5 y el valor de hash MD5 de nuestro archivo coincidían. Eso significa que se verifica el valor hash MD5.

Conclusión

Aprendimos por primera vez sobre las funciones hash en este tutorial. Explicamos lo que hashlib.La función md5 () es y qué funciones están asociadas con ella. Discutimos algunas ventajas y aplicaciones de las funciones de hash MD5. Aprendimos a usar el hashlib.Método MD5 () para calcular el valor de hash MD5 de una cadena. También implementamos un par de ejemplos para enseñarle cómo calcular y verificar el valor de hash MD5 de archivos pequeños y grandes en Python.