Hashlib 标准库1
2
3
4
5
6
7
8
9# Author: Diedline
import hashlib
m = hashlib.md5()
m.update(b"hello")
print(m.hexdigest())
m.update(b"it's me")
print(m.hexdigest())
m.update(b"it's been a long time since we spoken..")
结果生成2个md5值
5d41402abc4b2a76b9719d911017c592
b69366eb09dc0edb6c393ae50f82048b
因为默认输入是unicode所以当你需要输入中文的话必须在你要输入的地方加.enconde(encoding = “utf-8”)1
2
3
4
5
6
7
8
9
10
11
12# Author: Diedline
import hashlib
m = hashlib.md5()
m.update(b"hello")
print(m.hexdigest())
m.update(b"it's me")
print(m.hexdigest())
m.update(b"it's been a long time since we spoken..")
m2 = hashlib.md5()
m2.update(b"helloit's me")
print(m2.hexdigest())
使用update是增加更新所以拼接起来的和更新后的两个md5值相同
结果
5d41402abc4b2a76b9719d911017c592
b69366eb09dc0edb6c393ae50f82048b
b69366eb09dc0edb6c393ae50f82048b
也可以使用sha1但是不推荐加密简单的不好1
2
3
4import hashlib
s2= hashlib.sha1()
s2.update(b"helloit's me")
print(s2.hexdigest())
结果
f23fb8def5332c76a601b3af0c6180b308740052
网上那些能破解md5的大多是撞库数据库中有很多md5值和明文对应所有遍历就能破解一些简单的弱密码。Sha256用的比较多
Hmac 双重加密
可以用1
2
3
4
5# Author: Diedline
import hmac
h = hmac.new("你号呀".encode(encoding="utf-8"),"我不好".encode(encoding="utf-8"))
print(h.digest())
print(h.hexdigest()) #这是十六进制加密
输出:
b”‘\xb3;\x82[`>\x81*r\xe2\x93\r5\xa6\x01”
27b33b825b603e812a72e2930d35a601