Python加密案例如何MD5加密文本

wen python案例 28

本文目录导读:

Python加密案例如何MD5加密文本

  1. 方法1:使用hashlib库(最常用)
  2. 方法2:一行代码加密
  3. 方法3:带盐值加密(更安全)
  4. 方法4:多次加密(增加破解难度)
  5. 完整示例:文件MD5校验
  6. 注意事项

我来为你介绍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()

注意事项

  1. MD5安全性:MD5已经不再安全,存在碰撞攻击,不建议用于密码存储
  2. 更好的选择:对于密码存储,建议使用:
    • 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现在主要用于文件完整性校验、数据指纹等场景,密码存储建议使用更安全的算法。

抱歉,评论功能暂时关闭!