Heim >Backend-Entwicklung >Python-Tutorial >Analyse des Hashlib-Verschlüsselungsmoduls in Python (Codebeispiel)

Analyse des Hashlib-Verschlüsselungsmoduls in Python (Codebeispiel)

不言
不言nach vorne
2018-11-23 17:01:182035Durchsuche
Der Inhalt dieses Artikels befasst sich mit der Analyse (Codebeispiele) des Hashlib-Verschlüsselungsmoduls. Ich hoffe, dass er für Sie hilfreich ist.

Das Hashlib-Modul ist ein Modul zur Hash-Verschlüsselung von Zeichenfolgen, die eine Eins-zu-Eins-Entsprechung haben. Es wird zum Verschlüsseln von Benutzernamen, Passwörtern usw. bei der Registrierung und Anmeldung verwendet.

1. Funktionsanalyse

1. Es gibt 5 Verschlüsselungsalgorithmen

md5(), sha1(), sha224(), sha256(). , sha3840(), sha512() erhalten jeweils unterschiedliche verschlüsselte Chiffretexte.

2. hashlib.hexdigest(): Holen Sie sich den verschlüsselten Chiffretext, hexadezimal, ohne Parameter

3. Holen Sie sich den verschlüsselten Chiffretext, binär, ohne Parameter

4. hashlib.copy(): Kopiert das aktuell erstellte Hash-Objekt, keine Parameter

5. Verschlüsselungs-Chiffretext aktualisieren, der erhaltene Chiffretext unterscheidet sich vom ursprünglichen Chiffretext

6. Hash.name: Zeigt den Verschlüsselungsalgorithmus des aktuell erhaltenen Hash-Objekts an

7. Hash-Chiffre Wie viele Bytes belegt der Schlüssel?

8. hash.block_size: Die Größe des Hash-Datenblocks

9. hashlib.algorithms_guaranteed: Sehen Sie sich die von allen Plattformen unterstützten Hash-Algorithmen an

10 , hashlib.algorithms_available: Alle Hash-Verschlüsselungsalgorithmen anzeigen

Codebeispiele:

import hashlib

def hash_fun_1(str1):
    #创建一个hahsh对象并对str1加密
    m=hashlib.md5(str1.encode('utf-8'))
    print('获取加密的密文,16进制,无参数',m.hexdigest())
    print('获取加密的密文,二进制,无参数:',m.digest())
    print('获取hash块的大小:',m.block_size)
    print('hash密钥占多少个字节:',m.digest_size)
    print('查看当前获得的hash对象的加密算法',m.name)

    #更新密文
    m.update(str1.encode('utf-8'))
    print('获取加密的密文,16进制,无参数', m.hexdigest())
    print('获取加密的密文,二进制,无参数:', m.digest())
    print('获取hash块的大小:', m.block_size)
    print('hash密钥占多少个字节:', m.digest_size)
    print('查看当前获得的hash对象的加密算法', m.name)

if __name__ == '__main__':
    hash_fun_1('mark')

Ergebnis:

获取加密的密文,16进制,无参数 ea82410c7a9991816b5eeeebe195e20a
获取加密的密文,二进制,无参数: b'\xea\x82A\x0cz\x99\x91\x81k^\xee\xeb\xe1\x95\xe2\n'
获取hash块的大小: 64
hash密钥占多少个字节: 16
查看当前获得的hash对象的加密算法 md5
获取加密的密文,16进制,无参数 ac673f4dbac79922838901b5974a419a
获取加密的密文,二进制,无参数: b'\xacg?M\xba\xc7\x99"\x83\x89\x01\xb5\x97JA\x9a'
获取hash块的大小: 64
hash密钥占多少个字节: 16
查看当前获得的hash对象的加密算法 md5

2. Anwendung:

1. Es gibt Zwei Möglichkeiten, ein Hash-Objekt zu erstellen:

m=hashlib.new('md5',b'cai')#选择md5加密函数加密字符串‘cai’
m=hashlib.md5('cai'.encode('utf-8'))#加密的另一种写法

2. Funktionsverwendung: Wenn die zu verschlüsselnde Zeichenfolge zu groß ist, können Sie dasselbe Hash-Objekt mehrmals zum Verschlüsseln verwenden, update( a)+ update(b)=update(a+b)

Beispiel:

import hashlib

m1=hashlib.md5()
m2=m1.copy()
m1.update('a'.encode('utf-8'))
m1.update('b'.encode('utf-8'))
print(m1.hexdigest())#输出密文
m2.update('ab'.encode('utf-8'))
print(m2.hexdigest())#输出另一个密文

Ergebnis ausführen:

187ef4436122d1cc2f40dc2b92f0eba0
187ef4436122d1cc2f40dc2b92f0eba0

3. Hash-Algorithmus-Verschlüsselung

Der vom Verschlüsselungsalgorithmus erhaltene Chiffretext ist irreversibel, aber die Beziehung zwischen Chiffretext und Klartext ist eins zu eins, was eine Entschlüsselung ermöglicht. Wenn dies der Fall ist, können Sie Big Data verwenden, um die Beziehung zwischen Chiffretext und Klartext zu speichern Den entsprechenden Klartext können Sie in der Datenbank finden, um die Entschlüsselung abzuschließen. Auf der häufig verwendeten Entschlüsselungswebsite: http://www.cmd5.com/ können Sie den entsprechenden Klartext finden, indem Sie den Chiffretext eingeben.

Um die Schwierigkeit beim Knacken zu erhöhen, ist es im Allgemeinen erforderlich, das Passwort mehrmals zu verschlüsseln. Das Hashlib-Modul verfügt über eine spezielle Funktion.

Codebeispiel:

import hashlib
import binascii

#sha256为算法名称,12345678为要加密的密码
#mark指的是杂质,额外添加的东西,使得破解更难
#10 000是迭代次数,可以理解为加密次数
pwd=hashlib.pbkdf2_hmac('sha256',b'12345678',b'mark',10000)
print(binascii.hexlify(pwd).decode('utf-8'))

Ergebnis:

129d11e9ba1f3ef4e1393516d434f356363ffe68d7baca37fd1e91f0e87abe36

Das obige ist der detaillierte Inhalt vonAnalyse des Hashlib-Verschlüsselungsmoduls in Python (Codebeispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen

In Verbindung stehende Artikel

Mehr sehen