Suche…


Einführung

hashlib implementiert eine gemeinsame Schnittstelle für viele verschiedene sichere Hash- und Message-Digest-Algorithmen. Enthalten sind die sicheren FIPS-Hash-Algorithmen SHA1, SHA224, SHA256, SHA384 und SHA512.

MD5-Hash einer Zeichenfolge

Dieses Modul implementiert eine gemeinsame Schnittstelle zu vielen verschiedenen sicheren Hash- und Message-Digest-Algorithmen. Enthalten sind die sicheren FIPS-Hash-Algorithmen SHA1, SHA224, SHA256, SHA384 und SHA512 (definiert in FIPS 180-2) sowie der RSA-MD5-Algorithmus (definiert in Internet RFC 1321).

Für jeden Hashtyp gibt es eine Konstruktormethode. Alle geben ein Hash-Objekt mit derselben einfachen Schnittstelle zurück. Beispiel: Verwenden Sie sha1() , um ein SHA1- sha1() zu erstellen.

hash.sha1()

Konstruktoren für Hash-Algorithmen, die in diesem Modul immer vorhanden sind, sind md5() , sha1() , sha224() , sha256() , sha384() und sha512() .

Sie können dieses Objekt nun mit der update() -Methode mit beliebigen Zeichenfolgen füttern. Sie können es jederzeit nach dem Digest der Verkettung der bisher eingespeisten Zeichenfolgen mit den Methoden digest() oder hexdigest() .

hash.update(arg)

Aktualisieren Sie das Hash-Objekt mit dem String arg. Wiederholte Aufrufe entsprechen einem einzigen Aufruf mit der Verkettung aller Argumente: m.update (a); m.update (b) ist äquivalent zu m.update (a + b).

hash.digest()

Gibt den Auszug der Strings zurück, die bisher an die update () -Methode übergeben wurden. Dies ist eine Zeichenfolge aus digest_size-Bytes, die Nicht-ASCII-Zeichen enthalten kann, einschließlich null Bytes.

hash.hexdigest()

Wie digest (), es sei denn, der Digest wird als String mit doppelter Länge zurückgegeben und enthält nur hexadezimale Ziffern. Dies kann verwendet werden, um den Wert sicher in E-Mails oder anderen nicht-binären Umgebungen auszutauschen.

Hier ist ein Beispiel:

>>> import hashlib
>>> m = hashlib.md5()
>>> m.update("Nobody inspects")
>>> m.update(" the spammish repetition")
>>> m.digest()
'\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
>>> m.hexdigest()
'bb649c83dd1ea5c9d9dec9a18df0ffe9'
>>> m.digest_size
16
>>> m.block_size
64

oder:

hashlib.md5("Nobody inspects the spammish repetition").hexdigest()
    'bb649c83dd1ea5c9d9dec9a18df0ffe9'

Algorithmus von OpenSSL

Es gibt auch einen generischen new() Konstruktor, der den Stringnamen des gewünschten Algorithmus als ersten Parameter verwendet, um den Zugriff auf die oben aufgeführten Hashes sowie auf andere Algorithmen zu ermöglichen, die Ihre OpenSSL-Bibliothek möglicherweise bietet. Die genannten Konstruktoren sind viel schneller als new() und sollten bevorzugt werden.

Verwenden von new() mit einem von OpenSSL bereitgestellten Algorithmus:

>>> h = hashlib.new('ripemd160')
>>> h.update("Nobody inspects the spammish repetition")
>>> h.hexdigest()
'cc4a5ce1b3df48aec5d22d1f16b894a0b894eccc'


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow