Suma de comprobación de Python

Vaibhhav Khetarpal 30 enero 2023
  1. Utilice la función hashlib.md5() para generar y comprobar la suma de comprobación de un archivo MD5 en Python
  2. Utilice el módulo os para generar y comprobar la suma de comprobación de un archivo MD5 en Python
Suma de comprobación de Python

Cuando se trata de cualquier lenguaje de programación popular y exitoso, el hash resulta ser una parte esencial de él. Uno de esos componentes del hash es realmente importante y significativamente relevante en la programación diaria, llamado suma de comprobación.

Este artículo discutirá Checksum y cómo generarlo para un archivo MD5.

Las sumas de comprobación se utilizan en Python con el propósito de detectar errores en un archivo. Tienen la tarea básica de validar los datos en un archivo determinado. Aunque es bastante similar, difiere del hash incorporado proporcionado por Python en cierto modo, ya que es determinista.

Utilice la función hashlib.md5() para generar y comprobar la suma de comprobación de un archivo MD5 en Python

El módulo hashlib se utiliza para implementar una interfaz común para varios algoritmos hash seguros y resúmenes de mensajes diferentes. Para implementar este método con éxito, necesitamos importar el módulo hashlib al código Python.

Aquí, usaremos principalmente la función hashlib.md5(), junto con la función update() y la función hexdigest() para actualizar y devolver un valor hexadecimal respectivamente.

El siguiente código utiliza la función hashlib.md5() para generar y verificar la suma de comprobación de un archivo MD5 en Python.

import hashlib


def md5(file1):
    md5h = hashlib.md5()
    with open(file1, "rb") as f:
        for chunk in iter(lambda: f.read(4096), b""):
            md5h.update(chunk)
    return md5h.hexdigest()

Debemos tener en cuenta que este código devolverá una cadena hexadecimal que representa el resumen dado. El uso de la función digest() devolverá los bytes empaquetados. El programador puede utilizar cualquiera de estas funciones teniendo en cuenta la salida deseada.

Utilice el módulo os para generar y comprobar la suma de comprobación de un archivo MD5 en Python

El módulo os en Python proporciona acceso a varias funciones que ayudan a interactuar con el sistema operativo. El módulo os es amplio y contiene varios módulos, todos los cuales se utilizan para cumplir diferentes propósitos.

Aquí, descargamos una imagen aleatoria y luego calculamos su suma de verificación para MD5, usando una función de Python que creamos, y finalmente la comparamos con la suma de verificación generada con la ayuda de comandos Unix.

La definición de función para la función get_checksum():

import hashlib


def get_checksum(filename, hash_function):
    """Generate checksum for file based on hash function (MD5).

    Args:
        filename (str): Path to file that will have the checksum generated.
        hash_function (str):  Hash function name - supports MD5

    Returns:
        str`: Checksum based on Hash function of choice.

    Raises:
        Exception: Invalid hash function is entered.

    """
    hash_function = hash_function.lower()

    with open(filename, "rb") as f:
        bytes = f.read()
        if hash_function == "md5":
            readable_hash = hashlib.md5(bytes).hexdigest()

        else:
            Raise("{} is an invalid hash function. Please Enter MD5 value")

    return readable_hash

El siguiente código utiliza la función get_checksum() definida anteriormente junto con el módulo os para generar y verificar la suma de verificación de un archivo MD5 en Python.

import os

pic = "g_circle-300x300.png"
resmd5 = get_checksum(pic, "md5")
os.system("md5 {}".format(pic))
print("Hash Function: MD5 - Filename: {}".format(resmd5))

Aunque MD5 se usa ampliamente, últimamente se ha descubierto que está roto y contiene muchos defectos. El proceso de generación y verificación de la suma de comprobación de un archivo puede ser muy arriesgado, y no se recomienda utilizar un archivo MD5 para este propósito.

Además, un archivo MD5 no es realmente el mejor si necesita algo seguro criptográficamente, ya que no está a la altura cuando se trata de eso.

Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn