Python-Prüfsumme

Vaibhhav Khetarpal 30 Januar 2023
  1. Verwendung von die Funktion hashlib.md5() zum Generieren und Prüfen der Prüfsumme einer MD5-Datei in Python
  2. Verwendung von das Modul os zum Generieren und Prüfen der Prüfsumme einer MD5-Datei in Python
Python-Prüfsumme

Wenn es um jede erfolgreiche und beliebte Programmiersprache geht, erweist sich Hashing als ein wesentlicher Bestandteil davon. Eine solche Komponente des Hashings ist wirklich wichtig und in der täglichen Programmierung von erheblicher Bedeutung, die sogenannte Prüfsumme.

In diesem Artikel wird die Prüfsumme und ihre Generierung für eine MD5-Datei behandelt.

Prüfsummen werden in Python zur Fehlererkennung in einer Datei verwendet. Sie haben die grundlegende Aufgabe, die Daten in einer bestimmten Datei zu validieren. Obwohl es ziemlich ähnlich ist, unterscheidet es sich in gewisser Weise vom integrierten Hashing von Python, da es deterministisch ist.

Verwendung von die Funktion hashlib.md5() zum Generieren und Prüfen der Prüfsumme einer MD5-Datei in Python

Das Modul hashlib wird verwendet, um eine gemeinsame Schnittstelle für mehrere verschiedene Message-Digest- und sichere Hash-Algorithmen zu implementieren. Um diese Methode erfolgreich zu implementieren, müssen wir das Modul hashlib in den Python-Code importieren.

Hier werden wir hauptsächlich die Funktion hashlib.md5() zusammen mit der Funktion update() und hexdigest() verwenden, um einen hexadezimalen Wert zu aktualisieren bzw. zurückzugeben.

Der folgende Code verwendet die Funktion hashlib.md5(), um die Prüfsumme einer MD5-Datei in Python zu generieren und zu überprüfen.

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()

Wir sollten beachten, dass dieser Code einen hex string zurückgibt, der den angegebenen Digest repräsentiert. Wenn Sie nur die Funktion digest() verwenden, werden die gepackten Bytes zurückgegeben. Der Programmierer kann jede dieser Funktionen unter Berücksichtigung der gewünschten Ausgabe verwenden.

Verwendung von das Modul os zum Generieren und Prüfen der Prüfsumme einer MD5-Datei in Python

Das Modul os in Python bietet Zugriff auf mehrere Funktionen, die bei der Interaktion mit dem Betriebssystem helfen. Das Modul os ist umfangreich und enthält mehrere Module, die alle zu unterschiedlichen Zwecken eingesetzt werden.

Hier laden wir ein zufälliges Image herunter und berechnen dann mit einer von uns erstellten Python-Funktion seine Prüfsumme für MD5 und vergleichen sie schließlich mit der mit Hilfe von Unix-Befehlen generierten Prüfsumme.

Die Funktionsdefinition für die Funktion 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

Der folgende Code verwendet die oben definierte Funktion get_checksum() zusammen mit dem Modul os, um die Prüfsumme einer MD5-Datei in Python zu generieren und zu überprüfen.

import os

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

Obwohl MD5 weit verbreitet ist, wurde in letzter Zeit festgestellt, dass es defekt ist und viele Fehler enthält. Das Generieren und Prüfen der Prüfsumme einer Datei kann sehr riskant sein und es wird nicht empfohlen, dafür eine MD5-Datei zu verwenden.

Außerdem ist eine MD5-Datei nicht gerade die beste, wenn Sie etwas kryptographisch Gesichertes brauchen, da sie nicht nur in dieser Hinsicht tadellos ist.

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