MD5加密

MD5 算法介绍

是什么:广泛使用的哈希函数,将任意数据映射为 128 位(16字节)指纹。

特点


Python 示例

python

import hashlib

def calculate_md5(data):
    """计算字符串的 MD5 哈希值"""
    return hashlib.md5(data.encode()).hexdigest()

def verify_md5(data, expected_hash):
    """验证 MD5 哈希值"""
    return calculate_md5(data) == expected_hash

# 使用示例
text = "Hello, World!"
md5_hash = calculate_md5(text)

print(f"原文: {text}")
print(f"MD5:  {md5_hash}")
print(f"验证: {verify_md5(text, md5_hash)}")

# 文件 MD5 计算
def file_md5(filename):
    with open(filename, 'rb') as f:
        return hashlib.md5(f.read()).hexdigest()

输出示例

text

原文: Hello, World!
MD5:  65a8e27d8879283831b664bd8b7f0ad4
验证: True

技术特性

输出格式:32位十六进制字符串

text

输入: "hello" → 输出: "5d41402abc4b2a76b9719d911017c592"

算法步骤

  1. 填充数据至 512 位倍数
  2. 初始化 4 个 32 位寄存器
  3. 4 轮循环处理(每轮 16 次操作)
  4. 最终拼接为 128 位哈希值

应用场景

历史用途

现代替代

安全警告

python

# 弱密码示例 - 不要这样使用!
password = "123456"
weak_hash = hashlib.md5(password.encode()).hexdigest()
print(f"弱 MD5 哈希: {weak_hash}")  # 易被彩虹表破解

# 推荐使用
secure_hash = hashlib.sha256(password.encode()).hexdigest()
print(f"安全哈希: {secure_hash}")

一句话总结:MD5 是经典的快速哈希算法,但因碰撞漏洞已不适用于安全场景,现代应用应使用 SHA-256 等更安全的替代方案。