hashlib模块

TOC

一、hashlib是一个加密模块

  • MD5:不可解密的算法(2018年以前)
  • sha_256(了解)

1、摘要算法

  • 摘要是从某个内容中获取的加密字符串
  • 摘要一样,内容就一定一样: 保证唯一性
  • 密码的密钥就是一个摘要
import hashlib

md5_obj = hashlib.md5()
# print(type(md5_obj))
str1 = '1234'

# update中一定要传入bytes类型数据
md5_obj.update(str1.encode('UTF-8'))

# 得到一个加密后的字符串
res = md5_obj.hexdigest()
print(res)

81dc9bdb52d04dc20036dbd8313ed055

2、加盐

以上操作撞库有可能会破解真实密码

防止撞库问题:加盐

import hashlib


def pwd_hash(pwd):
    md5_obj = hashlib.md5()
    str1 = str(pwd)
    md5_obj.update(str1.encode('UTF-8'))
    # 创造盐
    salting = '猜猜看呢?'
    # 加盐
    md5_obj.update(salting.encode('UTF-8'))
    # 得到一个加密后的字符串
    res = md5_obj.hexdigest()
    return res


print(pwd_hash(1234))

3、模拟用户登录

利用md5校验

# 获取文件中的用户名与密码
with open('user.txt', 'r', encoding='utf-8') as f:
    user_str = f.read()

file_user, file_pwd = user_str.split(':')

# 用户输入用户名与密码
username = input('请输入用户名:').strip()
password = input('请输入密码:').strip()  # 1234

# 校验用户名与密码是否一致
if username == file_user and file_pwd == pwd_md5(password):  # pwd_md5('1234')
    print('登陆成功')
else:
    print('登陆失败')




原文地址:https://www.cnblogs.com/cnhyk/p/11891003.html