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

通过导入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()

day32 Pyhton hashlib模块 总结异常处理的更多相关文章

  1. Python第十一天 异常处理 glob模块和shlex模块 打开外部程序和subprocess模块 subprocess类 Pipe管道 operator模块 sorted函数 os模块 hashlib模块 platform模块 csv模块

    Python第十一天    异常处理  glob模块和shlex模块    打开外部程序和subprocess模块  subprocess类  Pipe管道  operator模块   sorted函 ...

  2. python笔记7 logging模块 hashlib模块 异常处理 datetime模块 shutil模块 xml模块(了解)

    logging模块 日志就是记录一些信息,方便查询或者辅助开发 记录文件,显示屏幕 低配日志, 只能写入文件或者屏幕输出 屏幕输出 import logging logging.debug('调试模式 ...

  3. day32 Pyhton 异常处理

    一.内容回顾 反射的另外两个内置函数 setattr delattr a.b=c 与 setattr(a,'b',c)相对 del a.b 与 delattr(a,'b') 两个内置函数 A,B(A) ...

  4. python进阶(8):常用模块2+异常处理

    前段时间讲了很多的模块应为当时面向对象没有讲有几个没有说今天补上,再说一个异常处理. 一.hashlib模块 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 摘要算法又称哈 ...

  5. python hashlib模块 logging模块 subprocess模块

    一 hashlib模块 import hashlib md5=hashlib.md5() #可以传参,加盐处理 print(md5) md5.update(b'alex') #update参数必须是b ...

  6. Python 入门之 内置模块 -- hashlib模块

    Python 入门之 内置模块 -- hashlib模块 1.hashlib 摘要算法,加密算法 (1)主要用途: <1> 加密 : md5 sha1 sha256 sha512 md5, ...

  7. python标准模块(time、datetime及hashlib模块)

    一.time,datetime模块 时间相关的操作 import time time.sleep(5) # ==> 停顿多少秒 print(time.time()) # ==> 返回时间戳 ...

  8. Python hashlib模块 (主要记录md5加密)

    python提供了一个进行hash加密的模块:hashlib 下面主要记录下其中的md5加密方式(sha1加密一样把MD5换成sha1) >>> import hashlib > ...

  9. Python学习笔记——基础篇【第六周】——hashlib模块

    常用模块之hashlib模块 用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 import ...

随机推荐

  1. leetcode刷题-80.删除排序数组中的重复项 II

    题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. ...

  2. Spring IoC 到底是什么

    前言 「上一篇文章」我们对 Spring 有了初步的认识,而 Spring 全家桶中几乎所有组件都是依赖于 IoC 的. 刚开始听到 IoC,会觉得特别高大上,但其实掰开了很简单. 跟着我的脚步,一文 ...

  3. apply用法

    result.push.apply(result, document.getElementsByTagName(tag)); 但是,这里为什么要用apply呢? 因为document.getEleme ...

  4. Linux实战(6):Centos8上传镜像

    小记 做以下操作之前得准备一个Docker Hub 的账号,然后创建仓库可私有也可公有这得看你自己了,仓库的名称需记住等等会有用. 安装podman podman跟docker使用的命令非常的接近,但 ...

  5. JS 数组, 对象的增查改删(多语法对比)

    数据结构横向对比, 增, 查, 改, 删 建议: 在用数据结构的时候, 优先考虑Map和Set(考虑数据的唯一性), 放弃传统的数组和Object, 特别是比较复杂的数据结构时 数组 Map与Arra ...

  6. 2018尚硅谷最新SpringCloud免费视频教程

    [课程内容] 01.前提概述 02.大纲概览 03.从面试题开始 04.微服务是什么 05.微服务是什么2 06.微服务与微服务架构 07.微服务优缺点 08.微服务技术栈有哪些 09.为什么选择Sp ...

  7. 有关java反射的几个小方法的作用和区别

    1.Class类中 getXXX()和getDeclaredXXX()的作用和区别: 前者获取某个类的所有公共(public)的字段(or方法or构造函数),包括父类.后者获取所有的字段(or方法or ...

  8. [BJDCTF 2nd]文件探测

    [BJDCTF 2nd]文件探测 这两天刷题碰到了一道稍微有难度的题,记录一下,有一些点是未被掌握到的. home.php: <?php setcookie("y1ng", ...

  9. nginx 1.12安装

    准备工作 使用root用户安装. 到nginx官网下载Linux源码或者执行:wget http://nginx.org/download/nginx-1.12.2.tar.gz. 到pcre站点下载 ...

  10. Python-统计序列中元素

    问题1: 随机数列[12,5,8,7,8,9,4,8,5,...] 中出现次数最高的3个元素,他们出现的次数 问题2: 对某英文文章的单词,进行词频统计,找出出现次数最搞得10个单词,他们出现的次数是 ...