MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由 Ronald Rivest 在 1991 年设计。它将任意长度的数据映射为一个 128 位的哈希值(通常表示为 32 个十六进制字符)。MD5 主要用于数据完整性验证,确保数据在传输过程中没有被篡改。
主要特点
- 固定输出长度:无论输入数据的长度如何,MD5 哈希值始终是 128 位(16 字节),通常表示为 32 个十六进制字符。
- 快速计算:MD5 算法计算速度快,适合处理大量数据。
- 抗碰撞性:理论上很难找到两个不同的输入数据,使得它们的 MD5 哈希值相同。
- 不可逆性:从 MD5 哈希值无法反推出原始数据。
应用场景 - 数据完整性验证:确保文件或数据在传输过程中没有被篡改。
- 密码存储:虽然不推荐直接使用 MD5 存储密码,但有时会结合盐值(salt)使用。
- 数字签名:在数字签名中,MD5 可以用于生成消息摘要。
def make_password(password, salt='luckyletop'):"""哈希算法是一种将任意长度的数据映射为固定长度的字符串md5:不可逆"""# 生成md5对象md5 = hashlib.md5()# 转码password_str = str(password+salt).encode(encoding='utf-8')# 加密操作md5.update(password_str)return md5.hexdigest()