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
>>> 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
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
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
md5_hash = hashlib.md5(b'EXAMPLE')
print(md5_hash.hexdigest())
Das Ausgabeergebnis ist:
18fa661e2a4a7dd6471cc1407290cf6e
digest(): Ruft den Hashwert in binärer Darstellung ab.
Beispiel
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
md5_hash = hashlib.md5(b'EXAMPLE')
print(md5_hash.hexdigest())
Das Ausgabeergebnis ist:
18fa661e2a4a7dd6471cc1407290cf6e
SHA-1
Beispiel
sha1_hash = hashlib.sha1(b'EXAMPLE')
print(sha1_hash.hexdigest())
Das Ausgabeergebnis ist:
341709d0dbc266332f1cbcd8c25fd4a05412b7d4
SHA-256
Beispiel
sha256_hash = hashlib.sha256(b'EXAMPLE')
print(sha256_hash.hexdigest())
Das Ausgabeergebnis ist:
673dc967d03201db7fe47b7eabd56c47ca5bc694222de303106a5504e5d0daa8
SHA-512
Beispiel
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:
| Algorithmusname | Digest-Länge (Bits) | Ausgabelänge (Bytes) | Sicherheit | Nutzung |
|---|---|---|---|---|
| md5 | 128 | 16 | Unsicher | Überprüfung der Datenintegrität, Passwortspeicherung usw. |
| sha1 | 160 | 20 | Unsicher | Überprüfung der Datenintegrität, Passwortspeicherung usw. |
| sha224 | 224 | 28 | Niedrig | Überprüfung der Datenintegrität, digitale Signaturen usw. |
| sha256 | 256 | 32 | Mittel | Überprüfung der Datenintegrität, digitale Signaturen usw. |
| sha384 | 384 | 48 | Hoch | Digitale Signaturen, Verschlüsselungsalgorithmen usw. |
| sha512 | 512 | 64 | Hoch | Digitale Signaturen, Verschlüsselungsalgorithmen usw. |
| sha3_224 | 224 | 28 | Hoch | Ein Mitglied der zukünftigen Standard-SHA-3-Familie, geeignet für digitale Signaturen usw. |
| sha3_256 | 256 | 32 | Hoch | Ein Mitglied der zukünftigen Standard-SHA-3-Familie, geeignet für digitale Signaturen usw. |
| sha3_384 | 384 | 48 | Hoch | Ein Mitglied der zukünftigen Standard-SHA-3-Familie, geeignet für digitale Signaturen usw. |
| sha3_512 | 512 | 64 | Hoch | Ein Mitglied der zukünftigen Standard-SHA-3-Familie, geeignet für digitale Signaturen usw. |
| shake_128 | Variable | Variable | Hoch | Die SHAKE-Serie ist eine Version der SHA-3-Familie mit variabler Länge, geeignet für verschiedene Anwendungen. |
| shake_256 | Variable | Variable | Hoch | Die 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.