{"id":66687,"date":"2023-11-07T11:02:45","date_gmt":"2023-11-07T10:02:45","guid":{"rendered":"https:\/\/kinsta.com\/de\/?p=66687&#038;preview=true&#038;preview_id=66687"},"modified":"2023-11-16T10:03:04","modified_gmt":"2023-11-16T09:03:04","slug":"python-hashing","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/python-hashing\/","title":{"rendered":"Was du \u00fcber Hashing in Python wissen musst"},"content":{"rendered":"<p><a href=\"https:\/\/kinsta.com\/de\/blog\/objektorientierten-programmierung-python\/\">Python-Programmierer\/innen<\/a> verwenden Hashing, um Eingabedaten in einen Wert fester Gr\u00f6\u00dfe umzuwandeln. Dieser Wert repr\u00e4sentiert die Daten eindeutig, und die Hash-Technik macht es einfach, verschiedene Formen von Daten sicher zu \u00fcbertragen und zu speichern.<\/p>\n<p>Hashing sch\u00fctzt Daten vor unberechtigtem Zugriff und Manipulation. Es ist ein wesentlicher Bestandteil der Datenintegrit\u00e4t und der <a href=\"https:\/\/kinsta.com\/de\/blog\/cloud-sicherheit\/\">Sicherheit von Anwendungsf\u00e4llen<\/a>.<\/p>\n<p>In diesem Artikel erf\u00e4hrst du alles, was du \u00fcber Hashing in Python wissen musst. Er geht auf die Einsatzm\u00f6glichkeiten von Hashing ein und stellt verschiedene Hashing-Algorithmen vor, die deinen Code effizienter, sicherer und zuverl\u00e4ssiger machen.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Was ist Hashing in Python?<\/h2>\n<p>Beim Hashing werden Eingabedaten, wie z. B. eine Zeichenkette, eine Datei oder ein Objekt, in eine Zeichenkette mit fester Gr\u00f6\u00dfe umgewandelt. Der Hash oder Digest repr\u00e4sentiert die Eingabe auf eindeutige und reproduzierbare Weise.<\/p>\n<p>Hashing spielt eine wichtige Rolle bei der Erkennung von Datenmanipulationen und der Verbesserung der Sicherheit. Es kann einen Hash-Wert f\u00fcr eine Datei, eine Nachricht oder ein anderes Datenelement errechnen. Eine Anwendung speichert den Hashwert sicher, um sp\u00e4ter zu \u00fcberpr\u00fcfen, ob die Daten nicht manipuliert wurden.<\/p>\n<p>Eine der h\u00e4ufigsten Anwendungen von Hashing im Sicherheitsbereich ist die <a href=\"https:\/\/kinsta.com\/de\/blog\/passwort-manager\/\">Speicherung von Passw\u00f6rtern<\/a>. Hashing ist eine praktikable Alternative zur Speicherung von Klartextpassw\u00f6rtern in einer Datenbank. Wenn ein Benutzer sein Passwort eingibt, wird es vom System gehasht, bevor es in der Datenbank gespeichert wird. Wenn ein Hacker auf die Datenbank zugreift, wird er feststellen, dass das Passwort nur schwer zu stehlen ist.<\/p>\n<p>Die Hashing-Funktionen von Python machen all dies m\u00f6glich. Mit diesen mathematischen Funktionen kann eine Anwendung Daten in Hash-Werte umwandeln.<\/p>\n<h2>Wie man eine wirksame Hashing-Funktion erstellt<\/h2>\n<p>Eine Hashing-Funktion sollte die folgenden Kriterien erf\u00fcllen, um effektiv und sicher zu sein:<\/p>\n<ul>\n<li><strong>Deterministisch <\/strong>&#8211; Bei gleicher Eingabe sollte die Funktion immer die gleiche Ausgabe liefern.<\/li>\n<li><strong>Effizient <\/strong>&#8211; Sie sollte bei der Berechnung des Hashwerts einer beliebigen Eingabe rechnerisch effizient sein.<\/li>\n<li><strong>Kollisionssicher<\/strong> &#8211; Die Funktion sollte die Wahrscheinlichkeit minimieren, dass zwei Eingaben denselben Hash-Wert ergeben.<\/li>\n<li><strong>Gleichm\u00e4\u00dfig <\/strong>&#8211; Die Ausgaben der Funktion sollten gleichm\u00e4\u00dfig \u00fcber den Bereich der m\u00f6glichen Hash-Werte verteilt sein.<\/li>\n<li><strong>Nicht umkehrbar<\/strong> &#8211; Es sollte unwahrscheinlich sein, dass ein Computer den Eingabewert der Funktion auf der Grundlage des Hashwerts berechnen kann.<\/li>\n<li><strong>Nicht vorhersehbar<\/strong> &#8211; Es sollte schwierig sein, die Ergebnisse der Funktion aus einer Reihe von Eingaben vorherzusagen.<\/li>\n<li><strong>Empfindlich gegen\u00fcber \u00c4nderungen der Eingaben<\/strong> &#8211; Die Funktion sollte empfindlich gegen\u00fcber kleinen Unterschieden in der Eingabe sein. Geringe \u00c4nderungen sollten einen gro\u00dfen Unterschied im resultierenden Hash-Wert bewirken.<\/li>\n<\/ul>\n<h2>Hashing Use Cases<\/h2>\n<p>Sobald du eine geeignete Hash-Funktion mit all diesen Eigenschaften hast, kannst du sie f\u00fcr verschiedene Anwendungsf\u00e4lle einsetzen. Hashing-Funktionen eignen sich gut f\u00fcr:<\/p>\n<ul>\n<li><strong>Speicherung von Passw\u00f6rtern<\/strong> &#8211; Hashing ist eine der besten Methoden, um Benutzerpassw\u00f6rter in modernen Systemen zu speichern. Python kombiniert verschiedene Module, um Passw\u00f6rter zu hashen und zu sichern, bevor sie in einer Datenbank gespeichert werden.<\/li>\n<li><strong>Zwischenspeichern <\/strong>&#8211; Hashing speichert die Ausgabe einer Funktion, um Zeit zu sparen, wenn sie sp\u00e4ter aufgerufen wird.<\/li>\n<li><strong>Datenabfrage<\/strong> &#8211; Python verwendet eine Hash-Tabelle mit einer eingebauten W\u00f6rterbuch-Datenstruktur, um Werte schnell nach Schl\u00fcssel abzurufen.<\/li>\n<li><strong>Digitale Signaturen<\/strong> &#8211; Hashing kann die Authentizit\u00e4t von Nachrichten mit digitalen Signaturen \u00fcberpr\u00fcfen.<\/li>\n<li><strong>\u00dcberpr\u00fcfung der Dateiintegrit\u00e4t<\/strong> &#8211; Hashing kann die Integrit\u00e4t einer Datei w\u00e4hrend der \u00dcbertragung und des Downloads \u00fcberpr\u00fcfen.<\/li>\n<\/ul>\n<h2>Pythons eingebaute Hashing-Funktion<\/h2>\n<p>Die in Python eingebaute Hash-Funktion <code>hash()<\/code> gibt einen ganzzahligen Wert zur\u00fcck, der das Eingabeobjekt darstellt. Der Code verwendet dann den resultierenden Hash-Wert, um die Position des Objekts in der Hashtabelle zu bestimmen. Diese Hash-Tabelle ist eine Datenstruktur, die W\u00f6rterb\u00fccher und Mengen implementiert.<\/p>\n<p>Der folgende Code zeigt, wie die Funktion <code>hash()<\/code> funktioniert:<\/p>\n<pre><code class=\"language-python\">my_string = \"hello world\"\n\n# Calculate the hash value of the string\nhash_value = hash(my_string)\n\n# Print the string and its hash value\nprint(\"String: \", my_string)\nprint(\"Hash value: \", hash_value)<\/code><\/pre>\n<p>Wenn wir diesen Code in einer Datei namens <strong>hash.py<\/strong> speichern, k\u00f6nnen wir ihn wie folgt ausf\u00fchren (und die Ausgabe sehen):<\/p>\n<pre><code class=\"language-bash\">% python3 hash.py\nString:  hello world\nHash value:  2213812294562653681<\/code><\/pre>\n<p>Lass uns das noch einmal ausf\u00fchren:<\/p>\n<pre><code class=\"language-bash\">% python3 hash.py\nString:  hello world\nHash value:  -631897764808734609<\/code><\/pre>\n<p>Der Hash-Wert ist anders, wenn er ein zweites Mal aufgerufen wird, weil neuere Versionen von Python (ab Version 3.3) standardm\u00e4\u00dfig einen zuf\u00e4lligen Hash-Seed f\u00fcr diese Funktion verwenden. Der Seed \u00e4ndert sich bei jedem Aufruf von Python. Innerhalb einer einzelnen Instanz werden die Ergebnisse identisch sein.<\/p>\n<p>F\u00fcgen wir zum Beispiel diesen Code in unsere Datei <strong>hash.py<\/strong> ein:<\/p>\n<pre><code class=\"language-python\">my_string = \"hello world\"\n\n# Calculate 2 hash values of the string\nhash_value1 = hash(my_string)\nhash_value2 = hash(my_string)\n\n# Print the string and its hash values\nprint(\"String: \", my_string)\nprint(\"Hash value 1: \", hash_value1)\nprint(\"Hash value 2: \", hash_value2)<\/code><\/pre>\n<p>Wenn er ausgef\u00fchrt wird, sehen wir etwas wie das hier:<\/p>\n<pre><code class=\"language-bash\">String: hello world\nHash value 1:  -7779434013116951864\nHash value 2:  -7779434013116951864<\/code><\/pre>\n<h3>Beschr\u00e4nkungen des Hashings<\/h3>\n<p>Obwohl die Hash-Funktion von Python f\u00fcr verschiedene Anwendungsf\u00e4lle vielversprechend ist, ist sie aufgrund ihrer Einschr\u00e4nkungen f\u00fcr Sicherheitszwecke nicht geeignet. So geht&#8217;s:<\/p>\n<ul>\n<li><strong>Kollisionsangriffe<\/strong> &#8211; Eine Kollision liegt vor, wenn zwei verschiedene Eingaben denselben Hash-Wert ergeben. Ein Angreifer k\u00f6nnte dieselbe Eingabemethode verwenden, um Sicherheitsma\u00dfnahmen zu umgehen, die sich auf Hash-Werte zur Authentifizierung oder Datenintegrit\u00e4tspr\u00fcfung st\u00fctzen.<\/li>\n<li><strong>Begrenzte Eingabegr\u00f6\u00dfe<\/strong> &#8211; Da Hash-Funktionen unabh\u00e4ngig von der Gr\u00f6\u00dfe der Eingabe eine Ausgabe mit fester Gr\u00f6\u00dfe erzeugen, kann eine Eingabe, die gr\u00f6\u00dfer als die Ausgabe der Hash-Funktion ist, eine Kollision verursachen.<\/li>\n<li><strong>Vorhersagbarkeit <\/strong>&#8211; Eine Hash-Funktion sollte deterministisch sein, d. h. sie sollte jedes Mal dieselbe Ausgabe liefern, wenn du dieselbe Eingabe machst. Angreifer k\u00f6nnen diese Schw\u00e4che ausnutzen, indem sie Hash-Werte f\u00fcr viele Eingaben vorkompilieren und sie dann mit den Hash-Werten der Zielwerte vergleichen, um eine \u00dcbereinstimmung zu finden. Dieser Vorgang wird als Rainbow-Table-Angriff bezeichnet.<\/li>\n<\/ul>\n<p>Um Angriffe zu verhindern und deine Daten zu sch\u00fctzen, solltest du sichere Hash-Algorithmen verwenden, die gegen solche Schwachstellen gesch\u00fctzt sind.<\/p>\n<h2>Hashlib f\u00fcr sicheres Hashing in Python verwenden<\/h2>\n<p>Anstatt das eingebaute Python <code>hash()<\/code> zu verwenden, kannst du <strong>hashlib<\/strong> f\u00fcr sicheres Hashing nutzen. Dieses Python-Modul bietet eine Vielzahl von Hash-Algorithmen, um Daten sicher zu hashen. Zu diesen Algorithmen geh\u00f6ren MD5, SHA-1 und die sicherere SHA-2-Familie, einschlie\u00dflich SHA-256, SHA-384, SHA-512 und andere.<\/p>\n<h3>MD5<\/h3>\n<p>Der weit verbreitete kryptografische Algorithmus MD5 gibt einen 128-Bit-Hashwert preis. Verwende den folgenden Code, um mit dem Konstruktor <code>md5<\/code> der <strong>hashlib<\/strong> einen MD5-Hashwert zu erzeugen:<\/p>\n<pre><code class=\"language-python\">import hashlib\n\ntext = \"Hello World\"\nhash_object = hashlib.md5(text.encode())\nprint(hash_object.hexdigest())<\/code><\/pre>\n<p>Die Ausgabe des obigen Codes (in unserer Datei <strong>hash.py<\/strong>) wird bei allen Aufrufen gleich sein:<\/p>\n<p><code>b10a8db164e0754105b7a99be72e3fe5<\/code><\/p>\n<p><strong>Hinweis:<\/strong> Die Methode <code>hexdigest()<\/code> im obigen Code gibt den Hash in einem hexadezimalen Format zur\u00fcck, das f\u00fcr alle nicht-bin\u00e4ren Darstellungen (z. B. E-Mail) geeignet ist.<\/p>\n<h3>SHA-1<\/h3>\n<p>Die Hash-Funktion SHA-1 sichert Daten, indem sie einen 160-Bit-Hash-Wert erzeugt. Verwende den folgenden Code mit dem <code>sha1<\/code> Konstruktor f\u00fcr den SHA-1 Hash des <strong>hashlib-Moduls<\/strong>:<\/p>\n<pre><code class=\"language-python\">import hashlib\n\ntext = \"Hello World\"\nhash_object = hashlib.sha1(text.encode())\nprint(hash_object.hexdigest())<\/code><\/pre>\n<p>Die Ausgabe des obigen Beispiels:<\/p>\n<p><code>0a4d55a8d778e5022fab701977c5d840bbc486d0<\/code><\/p>\n<h3>SHA-256<\/h3>\n<p>Es gibt verschiedene Hash-Optionen in der SHA-2 Familie. Der Konstruktor <strong>hashlib<\/strong> SHA-256 erzeugt eine sicherere Version dieser Familie mit einem 256-Bit-Hashwert.<\/p>\n<p>Programmierer verwenden SHA-256 oft f\u00fcr kryptografische Zwecke, wie digitale Signaturen oder Authentifizierungscodes f\u00fcr Nachrichten. Der folgende Code zeigt, wie man einen SHA-256-Hashwert erzeugt:<\/p>\n<pre><code class=\"language-python\">import hashlib\n\ntext = \"Hello World\"\nhash_object = hashlib.sha256(text.encode())\nprint(hash_object.hexdigest())<\/code><\/pre>\n<p>Die Ausgabe des obigen Codes:<\/p>\n<p><code>a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e<\/code><\/p>\n<h3>SHA-384<\/h3>\n<p>SHA-384 ist ein 384-Bit-Hash-Wert. Programmierer verwenden die SHA-384-Funktion oft in Anwendungen, die mehr Datensicherheit ben\u00f6tigen.<\/p>\n<p>Anhand der vorherigen Beispiele kannst du wahrscheinlich erraten, dass dies eine Anweisung ist, die einen SHA-384-Hashwert erzeugt:<\/p>\n<pre><code class=\"language-python\">hash_object = hashlib.sha384(text.encode())<\/code><\/pre>\n<h3>SHA-512<\/h3>\n<p>SHA-512 ist das sicherste Mitglied der SHA-2 Familie. Es erzeugt einen 512-Bit-Hashwert. Programmierer verwenden es f\u00fcr Anwendungen mit hohem Durchsatz, z. B. zur \u00dcberpr\u00fcfung der Datenintegrit\u00e4t. Der folgende Code zeigt, wie man einen SHA-512-Hash mit dem <strong>hashlib-Modul<\/strong> in Python erzeugt:<\/p>\n<pre><code class=\"language-python\">hash_object = hashlib.sha512(text.encode())<\/code><\/pre>\n<h2>Wie man einen Hash-Algorithmus ausw\u00e4hlt<\/h2>\n<p>Da sich diese Algorithmen unterscheiden, solltest du deinen Hash-Algorithmus anhand deines Anwendungsfalls und seiner Sicherheitsanforderungen ausw\u00e4hlen. Hier sind einige Schritte, die du befolgen solltest:<\/p>\n<ul>\n<li><strong>Verstehe den Anwendungsfall<\/strong> &#8211; Dein Anwendungsfall bestimmt, welche Art von Algorithmus du verwenden solltest. Wenn du zum Beispiel sensible Daten wie Passw\u00f6rter speicherst, sollte dein Hashing-Algorithmus vor Brute-Force-Angriffen sch\u00fctzen.<\/li>\n<li><strong>Ber\u00fccksichtige deine Sicherheitsanforderungen<\/strong> &#8211; Die Sicherheitsanforderungen deines Anwendungsfalls h\u00e4ngen von der Art der zu speichernden Daten ab und bestimmen, welche Art von Algorithmus du w\u00e4hlen solltest. Ein robuster Hashing-Algorithmus eignet sich zum Beispiel am besten f\u00fcr die Speicherung hochsensibler Daten.<\/li>\n<li><strong>Recherchiere die verf\u00fcgbaren Hash-Algorithmen<\/strong> &#8211; Untersuche jeden Hash-Typ, um seine St\u00e4rken und Schw\u00e4chen zu verstehen. Diese Informationen helfen dir, die beste Option f\u00fcr deinen Anwendungsfall auszuw\u00e4hlen.<\/li>\n<li><strong>Evaluiere den gew\u00e4hlten Hash-Algorithmus<\/strong> &#8211; Sobald du dich f\u00fcr einen Hash-Algorithmus entschieden hast, musst du pr\u00fcfen, ob er deinen Sicherheitsanforderungen entspricht. Dazu kann es notwendig sein, ihn gegen bekannte Angriffe oder Schwachstellen zu testen.<\/li>\n<li><strong>Implementiere und teste den Hash-Algorithmus <\/strong>&#8211; Schlie\u00dflich implementiere und teste den Algorithmus gr\u00fcndlich, um sicherzustellen, dass er korrekt und sicher funktioniert.<\/li>\n<\/ul>\n<h2>Wie man Hashing f\u00fcr die Passwortspeicherung nutzt<\/h2>\n<p>Hashing eignet sich hervorragend f\u00fcr die Speicherung von Passw\u00f6rtern, einer wichtigen Komponente der Cybersicherheit.<\/p>\n<p>Im Idealfall hasht und speichert die Anwendung Passw\u00f6rter in einer sicheren Datenbank, um unbefugten Zugriff und Datenmissbrauch zu verhindern. Das Hashing allein reicht jedoch nicht aus, um die Informationen zu sch\u00fctzen. Gehashte Passw\u00f6rter sind immer noch anf\u00e4llig f\u00fcr Brute-Force- und W\u00f6rterbuchangriffe. Hacker nutzen diese Methoden h\u00e4ufig, um Passw\u00f6rter zu erraten und sich unbefugten Zugang zu Konten zu verschaffen.<\/p>\n<p>Eine sicherere Methode, Hashing f\u00fcr die Passwortspeicherung zu verwenden, ist die Salting-Technik. Beim Salting werden jedem Passwort einzigartige, zuf\u00e4llige Zeichenfolgen oder Zeichen hinzugef\u00fcgt, bevor es gehasht wird. Das Salt ist f\u00fcr jedes Passwort einzigartig und wird von der Anwendung zusammen mit dem gehashten Passwort in der Datenbank gespeichert.<\/p>\n<p>Jedes Mal, wenn sich ein Benutzer anmeldet, ruft die Anwendung das Salt aus der Datenbank ab, f\u00fcgt es dem eingegebenen Passwort hinzu und verschl\u00fcsselt dann das kombinierte Salt und Passwort.<\/p>\n<p>Wenn sich ein Angreifer Zugang zur Datenbank verschafft, muss er den Hash f\u00fcr jedes Passwort und jeden m\u00f6glichen Salt-Wert berechnen. Das Salzen macht diese Angriffe komplexer und ist daher eine hilfreiche Technik, um W\u00f6rterbuchangriffe abzuwehren.<\/p>\n<p>Das <strong>secrets<\/strong> Modul von Python macht das Salting einfach. Dieses Modul erzeugt zuf\u00e4llige Salts, speichert Passw\u00f6rter sicher und verwaltet Token und kryptografische Schl\u00fcssel.<\/p>\n<p>Der folgende Code nutzt die <strong>hashlib-Bibliothek<\/strong> und das <strong>secrets-Modul<\/strong>, um die Passw\u00f6rter der Nutzer noch besser zu sch\u00fctzen:<\/p>\n<pre><code class=\"language-python\">import hashlib\nimport secrets\n\n# Generate a random salt using the secrets module\nsalt = secrets.token_hex(16)\n\n# Get the user's password from input\npassword = input(\"Enter your password: \")\n\n# Hash the password using the salt and the SHA-256 algorithm\nhash_object = hashlib.sha256((password + salt).encode())\n\n# Get the hexadecimal representation of the hash\nhash_hex = hash_object.hexdigest()\n\n# Store the salt and hash_hex in your database<\/code><\/pre>\n<h2>Wie man Hashing f\u00fcr Datenintegrit\u00e4tspr\u00fcfungen verwendet<\/h2>\n<p>Hashing hilft auch dabei, die Integrit\u00e4t von Daten zu pr\u00fcfen und \u00fcbertragene Daten vor Ver\u00e4nderungen und Manipulationen zu sch\u00fctzen. Diese vierstufige Technik verwendet eine kryptografische Hash-Funktion, um der Datei einen eindeutigen Hash-Wert zu geben.<\/p>\n<p>Zun\u00e4chst w\u00e4hlst du eine geeignete Hash-Funktion aus und erzeugst mit ihr einen Hash-Wert f\u00fcr die Eingabedaten. Speichere diesen Hash-Wert und verwende ihn bei Bedarf zum Vergleich. Wann immer du die Integrit\u00e4t der Daten \u00fcberpr\u00fcfen musst, erzeugt die Anwendung den Hash-Wert der aktuellen Daten mit derselben Hash-Funktion. Dann vergleicht die Anwendung den neuen Hashwert mit dem gespeicherten Wert, um sicherzustellen, dass sie identisch sind. Ist dies der Fall, sind die Daten unbesch\u00e4digt.<\/p>\n<p>Der Hashwert ist eindeutig, und selbst eine winzige \u00c4nderung der Eingabedaten f\u00fchrt zu einem deutlich anderen Hashwert. So lassen sich unbefugte \u00c4nderungen an den \u00fcbermittelten Daten leicht erkennen.<\/p>\n<p>Die folgenden Schritte veranschaulichen die Verwendung einer Hash-Funktion zur \u00dcberpr\u00fcfung der Datenintegrit\u00e4t.<\/p>\n<h3>Schritt 1: Importiere das hashlib-Modul<\/h3>\n<pre><code class=\"language-python\">import hashlib<\/code><\/pre>\n<h3>Schritt 2: Einen hashlib-Hash-Algorithmus verwenden<\/h3>\n<pre><code class=\"language-python\">def generate_hash(file_path):\n\n    # Open the file in binary mode\n    with open(file_path, \"rb\") as f:\n\n        # Read the contents of the file\n        contents = f.read()\n\n        # Generate the SHA-256 hash of the contents\n        hash_object = hashlib.sha256(contents)\n\n        # Return the hexadecimal representation of the hash\n        return hash_object.hexdigest()<\/code><\/pre>\n<h3>Schritt 3: Rufe die Funktion auf und gib den Dateipfad an<\/h3>\n<pre><code class=\"language-python\">file_path = \"path\/to\/my\/file.txt\"\nhash_value = generate_hash(file_path)\nprint(hash_value)<\/code><\/pre>\n<h3>Schritt 4: Erzeuge Hashes f\u00fcr die Originaldatei und die \u00fcbertragene oder ge\u00e4nderte Datei<\/h3>\n<pre><code class=\"language-python\"># Generate the hash of the original file\noriginal_file_path = \"path\/to\/my\/file.txt\"\noriginal_file_hash = generate_hash(original_file_path)\n\n# Transmit or modify the file (for example, by copying it to a different location)\ntransmitted_file_path = \"path\/to\/transmitted\/file.txt\"\n\n# Generate the hash of the transmitted file\ntransmitted_file_hash = generate_hash(transmitted_file_path)<\/code><\/pre>\n<h3>Schritt 5: Vergleich der beiden Hashes<\/h3>\n<pre><code class=\"language-python\">if original_file_hash == transmitted_file_hash:\n    print(\"The file has not been tampered with\")\nelse:\n    print(\"The file has been tampered with\")<\/code><\/pre>\n<h2>Zusammenfassung<\/h2>\n<p>Hashing ist von unsch\u00e4tzbarem Wert f\u00fcr die Datenintegrit\u00e4t und die Passwortsicherheit. Du holst das Beste aus einer Hash-Funktion heraus, wenn du sichere Hash-Techniken einsetzt, z. B. das <strong>hashlib-Modul<\/strong> und Salting.<\/p>\n<p>Diese Techniken helfen dabei, Regenbogenangriffe, Kollisionsangriffe und andere Sicherheitsl\u00fccken zu verhindern, die das Hashing betreffen. Programmierer nutzen diese Techniken oft mit Hashing-Funktionen in Python, um die Datenintegrit\u00e4t von Dateien zu gew\u00e4hrleisten und Passw\u00f6rter sicher zu speichern.<\/p>\n<p>Jetzt, wo du mehr \u00fcber Hashing-Techniken in Python erfahren hast, kannst du sie nutzen, um die Sicherheit deiner eigenen Anwendung zu verbessern. Lies weitere <a href=\"https:\/\/kinsta.com\/de\/thema\/python\/\">Python-Artikel<\/a> im Kinsta-Blog, um dein Wissen zu erweitern, und \u00fcberlege, ob du deine n\u00e4chste Python-Anwendung auf der <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Anwendungs-Hosting-Plattform<\/a> von Kinsta bereitstellst.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Python-Programmierer\/innen verwenden Hashing, um Eingabedaten in einen Wert fester Gr\u00f6\u00dfe umzuwandeln. Dieser Wert repr\u00e4sentiert die Daten eindeutig, und die Hash-Technik macht es einfach, verschiedene Formen von &#8230;<\/p>\n","protected":false},"author":259,"featured_media":66688,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[974,990],"class_list":["post-66687","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-python","topic-webentwicklung-sprachen"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Was du \u00fcber Hashing in Python wissen musst - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Willst du die Sicherheit deiner Anwendungen erh\u00f6hen? Entdecke die Hashing-Methoden von Python und mache deine Anwendungen sicher.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/de\/blog\/python-hashing\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Was du \u00fcber Hashing in Python wissen musst\" \/>\n<meta property=\"og:description\" content=\"Willst du die Sicherheit deiner Anwendungen erh\u00f6hen? Entdecke die Hashing-Methoden von Python und mache deine Anwendungen sicher.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/python-hashing\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-11-07T10:02:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-16T09:03:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/11\/python-hash.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1999\" \/>\n\t<meta property=\"og:image:height\" content=\"1000\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Steve Bonisteel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Willst du die Sicherheit deiner Anwendungen erh\u00f6hen? Entdecke die Hashing-Methoden von Python und mache deine Anwendungen sicher.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/11\/python-hash.png\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Steve Bonisteel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"10\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/python-hashing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/python-hashing\/\"},\"author\":{\"name\":\"Steve Bonisteel\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\"},\"headline\":\"Was du \u00fcber Hashing in Python wissen musst\",\"datePublished\":\"2023-11-07T10:02:45+00:00\",\"dateModified\":\"2023-11-16T09:03:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/python-hashing\/\"},\"wordCount\":1970,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/python-hashing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/11\/python-hash.png\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/python-hashing\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/python-hashing\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/python-hashing\/\",\"name\":\"Was du \u00fcber Hashing in Python wissen musst - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/python-hashing\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/python-hashing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/11\/python-hash.png\",\"datePublished\":\"2023-11-07T10:02:45+00:00\",\"dateModified\":\"2023-11-16T09:03:04+00:00\",\"description\":\"Willst du die Sicherheit deiner Anwendungen erh\u00f6hen? Entdecke die Hashing-Methoden von Python und mache deine Anwendungen sicher.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/python-hashing\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/python-hashing\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/python-hashing\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/11\/python-hash.png\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/11\/python-hash.png\",\"width\":1999,\"height\":1000},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/python-hashing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python\",\"item\":\"https:\/\/kinsta.com\/de\/thema\/python\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Was du \u00fcber Hashing in Python wissen musst\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/de\/#website\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/de\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\",\"https:\/\/x.com\/Kinsta_DE\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f\",\"name\":\"Steve Bonisteel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g\",\"caption\":\"Steve Bonisteel\"},\"description\":\"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/author\/stevebonisteel\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Was du \u00fcber Hashing in Python wissen musst - Kinsta\u00ae","description":"Willst du die Sicherheit deiner Anwendungen erh\u00f6hen? Entdecke die Hashing-Methoden von Python und mache deine Anwendungen sicher.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/de\/blog\/python-hashing\/","og_locale":"de_DE","og_type":"article","og_title":"Was du \u00fcber Hashing in Python wissen musst","og_description":"Willst du die Sicherheit deiner Anwendungen erh\u00f6hen? Entdecke die Hashing-Methoden von Python und mache deine Anwendungen sicher.","og_url":"https:\/\/kinsta.com\/de\/blog\/python-hashing\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2023-11-07T10:02:45+00:00","article_modified_time":"2023-11-16T09:03:04+00:00","og_image":[{"width":1999,"height":1000,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/11\/python-hash.png","type":"image\/png"}],"author":"Steve Bonisteel","twitter_card":"summary_large_image","twitter_description":"Willst du die Sicherheit deiner Anwendungen erh\u00f6hen? Entdecke die Hashing-Methoden von Python und mache deine Anwendungen sicher.","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/11\/python-hash.png","twitter_creator":"@Kinsta_DE","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Steve Bonisteel","Gesch\u00e4tzte Lesezeit":"10\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/python-hashing\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/python-hashing\/"},"author":{"name":"Steve Bonisteel","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f"},"headline":"Was du \u00fcber Hashing in Python wissen musst","datePublished":"2023-11-07T10:02:45+00:00","dateModified":"2023-11-16T09:03:04+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/python-hashing\/"},"wordCount":1970,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/python-hashing\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/11\/python-hash.png","inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/de\/blog\/python-hashing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/python-hashing\/","url":"https:\/\/kinsta.com\/de\/blog\/python-hashing\/","name":"Was du \u00fcber Hashing in Python wissen musst - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/python-hashing\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/python-hashing\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/11\/python-hash.png","datePublished":"2023-11-07T10:02:45+00:00","dateModified":"2023-11-16T09:03:04+00:00","description":"Willst du die Sicherheit deiner Anwendungen erh\u00f6hen? Entdecke die Hashing-Methoden von Python und mache deine Anwendungen sicher.","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/python-hashing\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/python-hashing\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/python-hashing\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/11\/python-hash.png","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/11\/python-hash.png","width":1999,"height":1000},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/python-hashing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/de\/"},{"@type":"ListItem","position":2,"name":"Python","item":"https:\/\/kinsta.com\/de\/thema\/python\/"},{"@type":"ListItem","position":3,"name":"Was du \u00fcber Hashing in Python wissen musst"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/de\/#website","url":"https:\/\/kinsta.com\/de\/","name":"Kinsta\u00ae","description":"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen","publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/de\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","https:\/\/x.com\/Kinsta_DE","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/d84ceff87bd64a4368a581fc8aa8bd6f","name":"Steve Bonisteel","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0adffb3f9c86a6ec8245f8399d540823?s=96&d=mm&r=g","caption":"Steve Bonisteel"},"description":"Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.","url":"https:\/\/kinsta.com\/de\/blog\/author\/stevebonisteel\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/66687","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/users\/259"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/comments?post=66687"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/66687\/revisions"}],"predecessor-version":[{"id":66983,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/66687\/revisions\/66983"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/66687\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/66687\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/66687\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/66687\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/66687\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/66687\/translations\/jp"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/66687\/translations\/es"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/66687\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/66688"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=66687"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=66687"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=66687"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}