• day32 Pyhton hashlib模块 总结异常处理


    一.当用明文密码进行信息存储的时候,会导致密码的泄露,如何解决问题

    通过导入hashlib模块,利用里面存在的算法对字符串进行加密计算得到一串密文的结果

    1.这个过程不可逆

    2.对于同一个字符串,同一种算法 计算的结果永远是相同的

    3.对于不同的字符串,计算的结果总是不同的

    import hashlib
    # hashlib.md5  # 最通用最快捷相对简单
    # hashlib.sha1 # 已经开始被大家广泛应用
    md5_obj = hashlib.md5()
    md5_obj.update('alex3714'.encode('utf-8'))
    ret = md5_obj.hexdigest()
    print(ret)#aee949757a2e698417463d47acac93df

    通过input输入pwd,通过md5算法进行加密

    pwd = input('>>>')
    md5_obj = hashlib.md5()
    md5_obj.update(pwd.encode('utf-8'))
    ret = md5_obj.hexdigest()
    print(ret)
    # 登陆 作业
    # 注册的时候,用户名|密文密码 记录到文件里
    # 登陆的时候,密码用同样的方式转成密文
    # 和文件中的进行比对
    # 确认一致之后 登陆成功!

    通过撞库可以到上面的比较简单的密码

    如何使密码更复杂

    通过更复杂的密码
    对于程序员来说:通过加盐让你的密码更加安全

    # 加固定的盐
    # md5_obj = hashlib.md5('任意的字符串'.encode('utf-8'))
    # md5_obj.update('123456'.encode('utf-8'))
    # ret = md5_obj.hexdigest()
    # print(ret)

    通过猜密码还是可能猜出加了固定盐的密码
    通过动态加盐-是最安全的存储密码的方式

    # md5_obj = hashlib.md5(alex.encode('utf-8'))
    # md5_obj.update(pwd.encode('utf-8'))
    # ret = md5_obj.hexdigest()
    # print(ret)
    # md5_obj = hashlib.sha1('alex'.encode('utf-8'))
    # md5_obj.update('pwd'.encode('utf-8'))
    # ret = md5_obj.hexdigest()
    # print(ret)

    hashlib模块

    import hashlib
    # with open('file','rb') as f :
    #     content = f.read()
    # md5_obj = hashlib.md5()
    # md5_obj.update(content)
    # print(md5_obj.hexdigest())
    #
    # with open('file1','rb') as f :
    #     content = f.read()
    # md5_obj = hashlib.md5()
    # md5_obj.update(content)
    # print(md5_obj.hexdigest())
    #下面两个函数结果相等
    # md5_obj = hashlib.md5()
    # md5_obj.update('hello,world'.encode('utf-8'))
    # print(md5_obj.hexdigest())
    #
    #
    # md5_obj = hashlib.md5()
    # md5_obj.update('hello,'.encode('utf-8'))
    # md5_obj.update('world'.encode('utf-8'))
    # print(md5_obj.hexdigest())
    # 文件非常大 大到4g的文件
    
    # def md5_file():
    #     md5_obj = hashlib.md5()
    #     with open('file','rb') as f :
    #         for line in f:
    #             md5_obj.update(line)
    #     print(md5_obj.hexdigest())
    #
    # md5_file()
  • 相关阅读:
    MySQL 数据类型
    MySQL 存储引擎
    在Windows上安装MySQL
    windows 查看端口占用
    Linux 配置静态IP
    Nginx 核心配置
    Nginx 简介
    Linux下使用Nginx
    Tomcat 核心配置
    Tomcat 项目部署、账户配置、状态监测
  • 原文地址:https://www.cnblogs.com/pythonz/p/10035255.html
Copyright © 2020-2023  润新知