Python-Prüfsumme
-
Verwendung von die Funktion
hashlib.md5()
zum Generieren und Prüfen derPrüfsumme
einerMD5
-Datei in Python -
Verwendung von das Modul
os
zum Generieren und Prüfen derPrüfsumme
einerMD5
-Datei in Python
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 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