今日内容详细

hashlib加密模块

Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。

什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。

也就是我们说的加密

什么是加密

'''
将明文(人看得懂)数据通过一些手段变成密文数据(人看不懂)
密文数据的表现形式一般都是一串没有规则的字符串
'''

加密算法

'''
加密算法就是:将明文变密文的内部规则
算法的难易程度可以根据产生密文的长短来判断
越长意味着算法越复杂
'''

加密的使用

'''
涉及到隐私数据的时候 应该考虑使用加密
最为常见的就是对用户的密码加密 防止密码泄露
'''

基本使用

import hashlib

指定算法(md5)

最为常见是md5算法,足够满足一般的业务需求

md5 = hashlib.md5()

将明文数据传递给算法对象

"""如果字符串中是纯数字和英文 那么直接在前面加b转成bytes类型"""
md5.update(b'hello') # 只能接收bytes类型

获取加密之后的密文数据

 res = md5.hexdigest()
print(res) # 5d41402abc4b2a76b9719d911017c592 # 在传入数据的时候 只要内容一致 那么算法的结果肯定一致
md5 = hashlib.md5()
# md5.update(b'hello')
# md5.update(b'world')
# md5.update(b'jason')
# print(md5.hexdigest()) # 8faebe82e744992e51c86845cac3e1b7 md5.update(b'helloworldjason')
print(md5.hexdigest()) # 8faebe82e744992e51c86845cac3e1b7

加密补充

1.加密之后的结果是无法直接反解密的
# 所谓的反解密其实是暴力破解>>>:反复的猜
"""
md5解密内部本质
提前想好很多可能是密码的组合,然后自己一一将其加密,存为{'密文1':明文1,'密文2':明文2} ,当输入密文时,就来一一对应查找 """

加盐处理

增加破解的难度

import hashlib

md5 = hashlib.md5()
# 加盐处理(添加一些额外的干扰项)
md5.update('你追我'.encode('utf8'))
md5.update(b'123')
print(md5.hexdigest()) # ce850e70febde5f3506fec0479dc0f96

动态加盐

干扰项动态变化

可以是用户名的一部分 也可以当前时间...

加密应用场景


"""
1.密码加密如何比对
用户输入的还是明文但是到了程序里面之后会采用相同的加密算法变成密文
之后拿着密文与跟数据库里面的密文比对如果一致就是密码正确不一致就是错误 2.文件内容一致性校验
作为软件的提供者 我们在提供安全软件的同时会对给该软件内容做加密处理得到一个该安全软件独有的密文
用户在下载软件之后也会对内容做相同的加密之后比对两次密文是否一致
如果是表示中途没有被修改 如果不是表示中途被修改过 可能存在病毒
"""
针对大文件一致性校验的优化策略
如果一个文件有10G 那么如果全部读取并加密速度太慢
这个时候可以考虑对文件内容进行切片读取并加密的操作

logging模块

日志模块就是在程序的各个环境记录 便于后续的查看

日志等级

import logging

日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG

# 日志按照重要程度分为五个级别:默认只有达到warning警告级别及以上才会记录日志
logging.debug('debug message') # 10 logging.info('info message') # 20 logging.warning('warning message') # 30 logging.error('error message') # 40 logging.critical('critical message') # 50

logging模块基本使用

import logging

file_handler = logging.FileHandler(filename='x1.log', mode='a', encoding='utf-8', )
# 所有的格式不需要记忆 后续几乎都是拷贝加修改
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p',
handlers=[file_handler, ],
level=logging.ERROR
) logging.error('特殊警告 再不学习,就没饭吃')

python学习-Day22的更多相关文章

  1. python学习day22 面向对象(四) 约束&反射

    1.栈与队列 栈:类似弹夹,先进后出 队列:类似水管,先进先出 class Stack(object): """ 先进后出 """ def ...

  2. python学习 day22 (3月29日)----(生成器推导式)

    新手上路请多担待 1 2 封装 3 私有化封装 #__author : 'liuyang' #date : 2019/3/29 0029 上午 9:35 # 不想让别人看 修改 我的属性 # 源码来说 ...

  3. python学习之旅

    python学习分类 python基础    +- day01——python初始.变量.常量.注释.基础数据类型.输入.if day02——while.字符串格式化.运算符.编码初识 day03—— ...

  4. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  5. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  6. Python 学习小结

    python 学习小结 python 简明教程 1.python 文件 #!/etc/bin/python #coding=utf-8 2.main()函数 if __name__ == '__mai ...

  7. Python学习路径及练手项目合集

    Python学习路径及练手项目合集 https://zhuanlan.zhihu.com/p/23561159

  8. python学习笔记-python程序运行

    小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...

  9. Python学习记录day6

    title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...

随机推荐

  1. Java中实现多态的机制是什么?

    Java允许父类或接口定义的引用变量指向子类或具体实现类的实例对象,而程序调用的方法在运行时才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类 ...

  2. java-jsp-learnning

    简介:JSP(全称Java Server Pages) 一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开头以%>结束. JSP是一种Java ser ...

  3. django-debug-toolbar 开发利器的使用教程

    django-debug-toolbar介绍 django-debug-toolbar 是一组可配置的面板,可显示有关当前请求/响应的各种调试信息,并在单击时显示有关面板内容的更多详细信息. 下载安装 ...

  4. python学习笔记(八)——文件操作

    在 windows 系统下,我们通过 路径+文件名+扩展名的方式唯一标识一个文件,而在 Linux 系统下通过 路径+文件名唯一标识一个文件. 文件分类:文件主要可以分为文本文件和二进制文件,常见的如 ...

  5. 数字电路的多路复用(MUX)

    学习文章:https://mp.weixin.qq.com/s/1pfLfvkAPyhEMLvfnyDy0g 最基本--2选1的MUX结构: 可以看作是:assign Y=S?B:A; 下面使用MUX ...

  6. 一文读懂充电宝usb接口电路及制作原理详细

    转自:http://www.elecfans.com/dianlutu/dianyuandianlu/20180511675801.html USB充电器套件,又名MP3/MP4充电器,输入AC160 ...

  7. C# Coding Conventions, Coding Standards & Best Practices

    C# Coding Conventions, Coding Standards & Best Practices Cui, Chikun Overview Introduction This ...

  8. 快速安装 kafka 集群

    前言 最近因为工作原因,需要安装一个 kafka 集群,目前网络上有很多相关的教程,按着步骤来也能完成安装,只是这些教程都显得略微繁琐.因此,我写了这篇文章帮助大家快速完成 kafka 集群安装.   ...

  9. java中throws子句是怎么用的?工作原理是什么

    7.throws子句 马克-to-win:当你的方法里抛出了checked异常,如你不catch,代表你当时不处理(不想处理或没条件处理),但你必须得通过"throws那个异常"告 ...

  10. 【Android开发】用WebView访问证书有问题的SSL网页

    Android系统的碎片化很严重,并且手机日期不正确.手机根证书异常.com.google.android.webview BUG等各种原因,都会导致WebViewClient无法访问HTTPS站点. ...