hashlib.md5 加密
题外话:md5加密是一个不可逆的过程,所以是不可反解的,网络上的一些解密很正确,只是由于撞库!!!
简单实现:
import hashlib
# 实例化一个对象
fiona = hashlib.md5(b"dassda") # 这里后面跟的字符串必须指定编码:ex1:b"hyg","hyg".encode("utf-8")
# 这个字符串应该叫密钥吧,根据它来控制一个系统中所有加密的规则都是一致的
# 加密
fiona.update("hyg520wq".encode("utf-8")) # 这里后面跟的字符串必须指定编码:ex1:b"hyg","hyg".encode("utf-8")
# 获取密文
print(fiona.hexdigest()) # bb4108244e3c617e495a43776eefaecd
解码简单实现:
本来以为很简单,刚刚写博客代码的时候,忽然发现一个好玩的东西:如下:
请看:
import hashlib
fiona = hashlib.md5() # 实例化对象
fiona.update("wq520".encode("utf-8"))
print(fiona.hexdigest()) # 0e45ec46e8e81bc9e14971d2f1ffeaae
fiona.update("wq520".encode("utf-8"))
print(fiona.hexdigest()) # 77227ccdc20ea8065347b159a585c549
fiona.update("wq520".encode("utf-8"))
print(fiona.hexdigest()) # 45f20419bbd24425450f860e34c192cc
一开始发现这个问题的时候,感觉有点神奇,明明是对同一个字符串进行加密,为什么得到的结果不一样!!
https://www.jianshu.com/p/7da9ede56dbd
上面的网址给了较为详细的解释,总之我们可以得到:
对于上面提到的问题:
import hashlib
# 创建个对象
fiona = hashlib.md5(b"wuqianwoaini")
# 1.使用单次加密
fiona.update(b"huangyonggangaiwuqian") # e8f388154e8883565f47e2494701db6a
# 2. 使用多次加密
fiona.update(b"huangyonggang")
fiona.update(b"aiwuqian") # e8f388154e8883565f47e2494701db6a
ret = fiona.hexdigest()
print(ret)