如何使用 Python 实现 MD5 加盐加密

2023-03-28 00:00:00 加密 如何使用 加盐

MD5 是一种常用的消息摘要算法,用于将任意长度的数据转换为一个固定长度的摘要输出。加盐是指在加密过程中加入一些随机字符串来增加加密的强度,防止被破解。下面是使用 Python 实现 MD5 加盐加密的示例代码:

import hashlib
import random

# 定义加盐函数
def create_salt(length=6):
    """
    生成随机字符串作为盐
    """
    salt_chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
    salt = ''.join(random.choice(salt_chars) for _ in range(length))
    return salt

# 定义加密函数
def md5_with_salt(plain_text):
    """
    加盐 MD5 加密
    """
    salt = create_salt()
    plain_text_with_salt = plain_text + salt
    md5 = hashlib.md5()
    md5.update(plain_text_with_salt.encode('utf-8'))
    cipher_text = md5.hexdigest()
    return cipher_text, salt

# 测试加密函数
if __name__ == '__main__':
    plain_text = 'pidancode.com'
    cipher_text, salt = md5_with_salt(plain_text)
    print(f'明文:{plain_text}')
    print(f'加盐密文:{cipher_text}')
    print(f'盐:{salt}')

    # 验证密文
    plain_text_with_salt = plain_text + salt
    md5 = hashlib.md5()
    md5.update(plain_text_with_salt.encode('utf-8'))
    assert cipher_text == md5.hexdigest(), '密文验证失败'

上述代码中,create_salt() 函数用于生成随机的盐字符串,长度默认为 6。md5_with_salt() 函数接收一个明文字符串,将随机生成的盐与明文拼接后进行 MD5 加密,返回加密后的密文和盐字符串。name == 'main' 的部分用于测试加密函数,生成加盐后的密文,并验证密文是否正确。

相关文章