Python Checksum

Vaibhhav Khetarpal 30 janeiro 2023
  1. Use a função hashlib.md5() para gerar e verificar a soma de verificação de um arquivo MD5 em Python
  2. Use o Módulo os para gerar e verificar a soma de verificação de um arquivo MD5 em Python
Python Checksum

Quando se trata de qualquer linguagem de programação popular e bem-sucedida, o hashing prova ser uma parte essencial dela. Um desses componentes de hashing é realmente importante e significativamente relevante na programação do dia-a-dia, chamado checksum.

Este artigo discutirá a soma de verificação e como gerá-la para um arquivo MD5.

Checksums são utilizados em Python para fins de detecção de erros em um arquivo. Eles têm a tarefa básica de validar os dados de um determinado arquivo. Embora seja bastante semelhante, ele difere do hashing embutido fornecido pelo Python de uma forma que é determinista.

Use a função hashlib.md5() para gerar e verificar a soma de verificação de um arquivo MD5 em Python

O módulo hashlib é utilizado para implementar uma interface comum para vários digest de mensagens diferentes e algoritmos de hash seguros. Para implementar este método com sucesso, precisamos importar o módulo hashlib para o código Python.

Aqui, usaremos principalmente a função hashlib.md5(), junto com as funções update() e hexdigest() para atualizar e retornar um valor hexadecimal respectivamente.

O código a seguir usa a função hashlib.md5() para gerar e verificar a soma de verificação de um arquivo MD5 em 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()

Devemos observar que este código retornará uma string hexadecimal que representa o resumo fornecido. Usar apenas a função digest() retornará os bytes compactados. O programador pode usar qualquer uma dessas funções tendo em mente a saída desejada.

Use o Módulo os para gerar e verificar a soma de verificação de um arquivo MD5 em Python

O módulo os em Python fornece acesso a várias funções que ajudam na interação com o sistema operacional. O módulo os é vasto e contém vários módulos, todos eles utilizados para diferentes finalidades.

Aqui, baixamos uma imagem aleatória e então calculamos sua soma de verificação para MD5, usando uma função python que criamos, e então a comparamos com a soma de verificação gerada com a ajuda de comandos Unix.

A definição da função para a função 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

O código a seguir usa a função get_checksum() definida acima junto com o módulo os para gerar e verificar a soma de verificação de um arquivo MD5 em 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))

Embora MD5 seja amplamente utilizado, recentemente foi descoberto que ele está quebrado e contém muitos defeitos. O processo de geração e verificação da soma de verificação de um arquivo pode ser muito arriscado e não é recomendado o uso de um arquivo MD5 para este propósito.

Além disso, um arquivo MD5 não é realmente o seu melhor se você precisa de algo criptograficamente protegido, pois isso não é apenas adequado.

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