Python-hashlib-Modul

Python hashlibDieses Modul wird hauptsächlich für Hash-Operationen verwendet.

Hash ist ein Algorithmus, der Eingabedaten beliebiger Länge auf Ausgabedaten fester Länge abbildet.

Hashing wird häufig in Szenarien wie der Überprüfung der Datenintegrität und der sicheren Speicherung von Passwörtern verwendet.

Die Ausgabe einer Hashfunktion ist normalerweise eine Zeichenkette aus scheinbar zufälligen Buchstaben und Zahlen.

Das hashlib-Modul bietet Implementierungen gängiger Hashalgorithmen wie MD5, SHA-1, SHA-256 usw.

Umhashlib-Funktionen zu verwenden, müssen sie zuerst importiert werden:

import hashlib 

Inhalt des hashlib-Moduls anzeigen:

Beispiel

>>> import hashlib
>>> dir(hashlib)
['__all__', '__block_openssl_constructor', '__builtin_constructor_cache', '__builtins__', '__cached__', '__doc__', '__file__', '__get_builtin_constructor', '__loader__', '__name__', '__package__', '__spec__', '_hashlib', 'algorithms_available', 'algorithms_guaranteed', 'blake2b', 'blake2s', 'md5', 'new', 'pbkdf2_hmac', 'scrypt', 'sha1', 'sha224', 'sha256', 'sha384', 'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512', 'sha512', 'shake_128', 'shake_256']

Im Folgenden werden einige gängige Methoden und Hashalgorithmen im hashlib-Modul vorgestellt:

Häufige Methoden

hashlib.new(name, data=None): Ein Hash-Objekt erstellen.

Der Parameter name ist der Name des Hashalgorithmus, und der Parameter data sind die zu hashierenden Daten.

Beispiel


import hashlib

sha256_hash = hashlib.new('sha256')
sha256_hash.update(b'EXAMPLE')
print(sha256_hash.hexdigest())

Das Ausgabeergebnis ist:

673dc967d03201db7fe47b7eabd56c47ca5bc694222de303106a5504e5d0daa8

hashlib.md5() / hashlib.sha1() / hashlib.sha256() / ...: Verwenden Sie direkt einen bestimmten Hash-Algorithmus, um ein Hash-Objekt zu erstellen.

Beispiel

import hashlib

md5_hash = hashlib.md5(b'EXAMPLE')
print(md5_hash.hexdigest())

Das Ausgabeergebnis ist:

18fa661e2a4a7dd6471cc1407290cf6e

Hash-Objekt-Methoden

update(data): Aktualisieren Sie den Nachrichteninhalt des Hash-Objekts.

Beispiel

import hashlib

sha256_hash = hashlib.sha256()
sha256_hash.update(b'Hello, ')
sha256_hash.update(b'Example!')
print(sha256_hash.hexdigest())

Das Ausgabeergebnis ist:

1b56561022276e9a5a8e1cda72e1b39fca6f6074326a74d39f6dfd9540c8ecd7

hexdigest(): Ruft den Hashwert in hexadezimaler Darstellung ab.

Beispiel

import hashlib

md5_hash = hashlib.md5(b'EXAMPLE')
print(md5_hash.hexdigest())

Das Ausgabeergebnis ist:

18fa661e2a4a7dd6471cc1407290cf6e

digest(): Ruft den Hashwert in binärer Darstellung ab.

Beispiel

import hashlib

sha1_hash = hashlib.sha1(b'EXAMPLE')
print(sha1_hash.digest())

Das Ausgabeergebnis ist:

b'4\x17\t\xd0\xdb\xc2f3/\x1c\xbc\xd8\xc2_\xd4\xa0T\x12\xb7\xd4'

Gängige Hash-Algorithmen

MD5

Beispiel

import hashlib

md5_hash = hashlib.md5(b'EXAMPLE')
print(md5_hash.hexdigest())

Das Ausgabeergebnis ist:

18fa661e2a4a7dd6471cc1407290cf6e

SHA-1

Beispiel

import hashlib

sha1_hash = hashlib.sha1(b'EXAMPLE')
print(sha1_hash.hexdigest())

Das Ausgabeergebnis ist:

341709d0dbc266332f1cbcd8c25fd4a05412b7d4

SHA-256

Beispiel

import hashlib

sha256_hash = hashlib.sha256(b'EXAMPLE')
print(sha256_hash.hexdigest())

Das Ausgabeergebnis ist:

673dc967d03201db7fe47b7eabd56c47ca5bc694222de303106a5504e5d0daa8

SHA-512

Beispiel

import hashlib

sha512_hash = hashlib.sha512(b'EXAMPLE')
print(sha512_hash.hexdigest())

Das Ausgabeergebnis ist:

7cfe50493eebd48ee7330c797459c2d0d5ca943bd1c84ad7a0b6783b11cd49d06b4a1dc84ee9ea5e20d0bfedbdb67e716500a20e5870abecea3f32dc8484a811

In der Praxis hängt die Wahl eines geeigneten Hash-Algorithmus von den spezifischen Anforderungen ab. Es sollte beachtet werden, dass MD5 und SHA-1 bereits als unsicher gelten, insbesondere im Sicherheitsbereich. Es wird empfohlen, stärkere Algorithmen wie SHA-256 oder SHA-512 zu verwenden.

Gängige Hash-Algorithmen im Python-hashlib-Modul und ihre Bedeutungen:

AlgorithmusnameDigest-Länge (Bits)Ausgabelänge (Bytes)SicherheitNutzung
md512816UnsicherÜberprüfung der Datenintegrität, Passwortspeicherung usw.
sha116020UnsicherÜberprüfung der Datenintegrität, Passwortspeicherung usw.
sha22422428NiedrigÜberprüfung der Datenintegrität, digitale Signaturen usw.
sha25625632MittelÜberprüfung der Datenintegrität, digitale Signaturen usw.
sha38438448HochDigitale Signaturen, Verschlüsselungsalgorithmen usw.
sha51251264HochDigitale Signaturen, Verschlüsselungsalgorithmen usw.
sha3_22422428HochEin Mitglied der zukünftigen Standard-SHA-3-Familie, geeignet für digitale Signaturen usw.
sha3_25625632HochEin Mitglied der zukünftigen Standard-SHA-3-Familie, geeignet für digitale Signaturen usw.
sha3_38438448HochEin Mitglied der zukünftigen Standard-SHA-3-Familie, geeignet für digitale Signaturen usw.
sha3_51251264HochEin Mitglied der zukünftigen Standard-SHA-3-Familie, geeignet für digitale Signaturen usw.
shake_128VariableVariableHochDie SHAKE-Serie ist eine Version der SHA-3-Familie mit variabler Länge, geeignet für verschiedene Anwendungen.
shake_256VariableVariableHochDie SHAKE-Serie ist eine Version der SHA-3-Familie mit variabler Länge, geeignet für verschiedene Anwendungen.

Notizen:

  • Digest-Länge (Bits):Gibt die vom Hash-Algorithmus ausgegebene Digest-Länge in Bits an.
  • Ausgabelänge (Bytes):Gibt die vom Hash-Algorithmus ausgegebene Digest-Länge in Bytes an.
  • Sicherheit:Gibt die Sicherheitsstufe des Hash-Algorithmus an, einschließlich "unsicher", "niedrig", "mittel" und "hoch". Dies ist eine allgemeine Klassifizierung; die konkrete Sicherheit hängt auch von der Verwendung des Algorithmus und spezifischen Angriffsszenarien ab.
Andere Erweiterungen