本文目录导读:

我来为你介绍Python中使用MD5加密文本的几种方法:
方法1:使用hashlib库(最常用)
import hashlib
def md5_encrypt(text):
"""MD5加密文本"""
# 创建md5对象
md5 = hashlib.md5()
# 更新要加密的内容(需要编码为bytes)
md5.update(text.encode('utf-8'))
# 获取十六进制格式的密文
return md5.hexdigest()
# 使用示例
text = "Hello, World!"
encrypted_text = md5_encrypt(text)
print(f"原文: {text}")
print(f"MD5密文: {encrypted_text}")
方法2:一行代码加密
import hashlib
text = "Hello, World!"
encrypted_text = hashlib.md5(text.encode('utf-8')).hexdigest()
print(f"MD5密文: {encrypted_text}")
方法3:带盐值加密(更安全)
import hashlib
def md5_with_salt(text, salt="my_salt"):
"""带盐值的MD5加密"""
# 将文本和盐值组合
text_with_salt = text + salt
md5 = hashlib.md5()
md5.update(text_with_salt.encode('utf-8'))
return md5.hexdigest()
# 使用示例
text = "Hello, World!"
encrypted = md5_with_salt(text)
print(f"原文: {text}")
print(f"带盐值MD5: {encrypted}")
方法4:多次加密(增加破解难度)
import hashlib
def md5_multiple_encrypt(text, times=3):
"""多次MD5加密"""
result = text
for _ in range(times):
result = hashlib.md5(result.encode('utf-8')).hexdigest()
return result
# 使用示例
text = "Hello, World!"
encrypted = md5_multiple_encrypt(text, 3)
print(f"3次MD5加密: {encrypted}")
完整示例:文件MD5校验
import hashlib
def get_file_md5(file_path):
"""计算文件的MD5值"""
md5 = hashlib.md5()
with open(file_path, 'rb') as f:
# 分块读取大文件
for chunk in iter(lambda: f.read(4096), b''):
md5.update(chunk)
return md5.hexdigest()
# 使用示例
def main():
# 1. 字符串加密
print("=== 字符串MD5加密 ===")
text = "Hello, Python加密!"
print(f"原文: {text}")
print(f"MD5: {hashlib.md5(text.encode()).hexdigest()}")
# 2. 验证密码
print("\n=== 密码验证 ===")
password = "mypassword123"
stored_hash = hashlib.md5(password.encode()).hexdigest()
input_password = "mypassword123"
input_hash = hashlib.md5(input_password.encode()).hexdigest()
if stored_hash == input_hash:
print("密码验证成功!")
else:
print("密码验证失败!")
# 3. 文件校验
print("\n=== 文件MD5校验 ===")
try:
file_md5 = get_file_md5("test.txt")
print(f"文件MD5: {file_md5}")
except FileNotFoundError:
print("文件不存在")
if __name__ == "__main__":
main()
注意事项
- MD5安全性:MD5已经不再安全,存在碰撞攻击,不建议用于密码存储
- 更好的选择:对于密码存储,建议使用:
- bcrypt
- SHA-256
- SHA-3
# 推荐的安全密码加密方式(使用bcrypt)
import bcrypt
def secure_hash_password(password):
"""安全的密码加密"""
# 生成盐值并加密
salt = bcrypt.gensalt()
hashed = bcrypt.hashpw(password.encode('utf-8'), salt)
return hashed
def verify_password(password, hashed):
"""验证密码"""
return bcrypt.checkpw(password.encode('utf-8'), hashed)
# 使用示例
password = "mypassword123"
hashed = secure_hash_password(password)
print(f"安全加密后的密码: {hashed}")
# 验证
if verify_password(password, hashed):
print("密码验证成功!")
MD5现在主要用于文件完整性校验、数据指纹等场景,密码存储建议使用更安全的算法。