Somme de contrôle Python

Vaibhhav Khetarpal 30 janvier 2023
  1. Utilisez la fonction hashlib.md5() pour générer et vérifier la somme de contrôle d’un fichier MD5 en Python
  2. Utilisez le module os pour générer et vérifier la somme de contrôle d’un fichier MD5 en Python
Somme de contrôle Python

Lorsqu’il s’agit de tout langage de programmation réussi et populaire, le hachage s’avère être une partie essentielle de celui-ci. L’un de ces composants du hachage est vraiment important et très pertinent dans la programmation quotidienne, appelé somme de contrôle.

Cet article discutera de la somme de contrôle et comment la générer pour un fichier MD5.

Les sommes de contrôle sont utilisées en Python dans le but de détecter les erreurs dans un fichier. Ils ont pour tâche fondamentale de valider les données d’un fichier donné. Bien qu’assez similaire, il diffère du hachage intégré fourni par Python dans la mesure où il est déterministe.

Utilisez la fonction hashlib.md5() pour générer et vérifier la somme de contrôle d’un fichier MD5 en Python

Le module hashlib est utilisé pour implémenter une interface commune pour plusieurs algorithmes de résumé de message et de hachage sécurisé différents. Afin d’implémenter cette méthode avec succès, nous devons importer le module hashlib dans le code Python.

Ici, nous utiliserons principalement la fonction hashlib.md5(), ainsi que les fonctions update() et hexdigest() pour mettre à jour et renvoyer respectivement une valeur hexadécimale.

Le code suivant utilise la fonction hashlib.md5() pour générer et vérifier la somme de contrôle d’un fichier 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()

Nous devons noter que ce code retournera une chaîne hexadécimale qui représente le condensé donné. Utiliser uniquement la fonction digest() renverra les octets compressés. Le programmeur peut utiliser n’importe laquelle de ces fonctions en gardant à l’esprit la sortie souhaitée.

Utilisez le module os pour générer et vérifier la somme de contrôle d’un fichier MD5 en Python

Le module os en Python donne accès à plusieurs fonctions qui aident à interagir avec le système d’exploitation. Le module os est vaste et contient plusieurs modules, qui sont tous utilisés pour remplir des objectifs différents.

Ici, nous téléchargeons une image aléatoire puis calculons sa somme de contrôle pour MD5, à l’aide d’une fonction python que nous créons, puis nous la comparons enfin à la somme de contrôle générée à l’aide de commandes Unix.

La définition de la fonction 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

Le code suivant utilise la fonction get_checksum() définie ci-dessus avec le module os pour générer et vérifier la somme de contrôle d’un fichier 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))

Bien que MD5 soit largement utilisé, il a récemment été découvert qu’il était cassé et qu’il contenait de nombreux défauts. Le processus de génération et de vérification de la somme de contrôle d’un fichier peut être très risqué, et il n’est pas recommandé d’utiliser un fichier MD5 à cette fin.

De plus, un fichier MD5 n’est pas vraiment votre meilleur si vous avez besoin de quelque chose de sécurisé cryptographiquement car il n’est pas seulement à la hauteur en la matière.

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