MD5是一个非常常见的摘要(hash)逻辑. 其特点就是小巧. 速度快. 极难被破解. 所以, md5依然是国内非常多的互联网公司选择的密码摘要算法.
from hashlib import md5
obj = md5()
obj.update("alex".encode("utf-8"))
bs=obj.hexdigest()
print(bs)
1·from hashlib import md5:从Python的hashlib库中导入md5模块,用于进行MD5散列运算。
2·obj = md5():创建一个md5对象,用于接下来的哈希计算。
3·obj.update("alex".encode("utf-8")):调用md5对象的update方法,对字符串"alex"进行处理。因为update方法要求输入的是字节类型数据,所以先通过encode("utf-8")将字符串转换为UTF-8编码的字节串。
4·bs=obj.hexdigest():调用md5对象的hexdigest方法,计算并返回经过MD5哈希处理后的16进制字符串表示。这个字符串就是"alex"的MD5哈希值。
5.打印结果
需要注意的是MD5中的update方法主要是针对的是字符型数据,如果s="you"
就需要进行s=s.encode()操作,不过这里默认是utf-8
二、MD5的基础知识
-
这玩意不可逆. 所以. 摘要算法就不是一个加密逻辑.
-
相同的内容计算出来的摘要应该是一样的
-
不同的内容(哪怕是一丢丢丢丢丢不一样) 计算出来的结果差别非常大
-
MD5的应用场景:
密码存储: 尽管现代安全实践推荐使用更强的哈希函数(如bcrypt或Argon2),MD5过去常用于存储用户密码的哈希值。当用户设置或更改密码时,系统会计算密码的MD5哈希,并将哈希值存储在数据库中,而不是原始密码。验证密码时,系统会对用户输入的密码执行同样的哈希计算,然后与数据库中的哈希值比较。
文件完整性验证: MD5可以用来生成文件的校验和。用户可以计算文件的MD5哈希值并与官方提供的哈希值对比,以确认文件在传输过程中是否被篡改。
数字签名: MD5曾用于生成数字签名的一部分,尽管这已不再安全。它帮助验证数据的完整性和来源,尽管现在更倾向于使用SHA系列算法。
软件版本管理: 在软件开发中,MD5有时用于标识构建或版本的唯一性,尽管这更多是历史遗留用途。