zoukankan      html  css  js  c++  java
  • 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('登陆失败')




  • 相关阅读:
    Netty入门(三)之web服务器
    Math对象
    DOM
    BOM
    字符串
    数组
    ajax
    如何安装vue脚手架
    git提交拉取远程仓库
    第九届蓝桥杯,赛后感!!含泪写完。
  • 原文地址:https://www.cnblogs.com/cnhyk/p/11891003.html
Copyright © 2011-2022 走看看