验证客户端链接的合法性 如果你想在分布式系统中实现一个简单的客户端链接认证功能,又不像SSL那么复杂, 那么可以利用hmac+加盐的方式来实现. 例1:简单的服务端如下 #!/usr/bin/env python # _*_ coding: utf-8 _*_ import os import socket import hmac secret_key = '老衲洗头用飘柔'.encode('utf-8') server = socket.socket() server.bind(('127.0…
铁乐学python_Day39_多进程和multiprocess模块2 锁 -- multiprocess.Lock (进程同步) 之前我们千方百计实现了程序的异步,让多个任务可以同时在几个进程中并发处理, 但是它们之间的运行没有顺序,一旦开启也不受我们控制. 尽管并发编程能让我们更加充分的利用IO资源,但是也会带来新的问题. 当多个进程使用同一份数据资源的时候,就会引发数据安全或顺序混乱问题. 遇到数据.安全比速度重要的场景,我们就需要将进程变回受同步控制. 例: #!/usr/bin/env…
铁乐学python_Day38_多进程和multiprocess模块1 [进程] 运行中的程序就是一个进程. 所有的进程都是通过它的父进程来创建的. 因此,运行起来的python程序也是一个进程,那么我们也可以在程序中再创建进程. 多个进程可以实现并发效果,程序中存在多个进程的时候,在某些时候,就会让程序的执行速度变快. 以之前所学的知识,并不能实现创建进程这个功能,所以就需要借助到python中强大的模块--multiprocess. 仔细说来,multiprocess不是一个模块而是pyth…
铁乐学Python_Day34_Socket模块2和黏包现象 套接字 套接字是计算机网络数据结构,它体现了C/S结构中"通信端点"的概念. 在任何类型的通信开始之前,网络应用程序必須创建套接字. 可以将它们比作成电话插孔,没有它将无法进行通信. 套接字最初是为同一主机上的应用程序所创建,使得主机上运行的一个程序(又名一个进程)与另一个运行的程序进行通信. 这就是所谓的进程间通信(Inter Process Communication, IPC). 有两种类型的套接字:基于文件的和面向网…
铁乐学Python_Day33_网络编程Socket模块1 部份内容摘自授课老师的博客http://www.cnblogs.com/Eva-J/ 理解socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口. 在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面, 对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议. 其实站在你的角度上看,socket就是一个模块. 我们通过调用模块中已…
铁乐学python_day25_序列化模块 部份内容摘自博客http://www.cnblogs.com/Eva-J/ 回顾内置方法: __len__ len(obj)的结果依赖于obj.__len__()的结果,计算对象的长度 __hash__ hash(obj)的结果依赖于obj.__hash__()的结果,计算对象的hash值 __eq__ obj1 == obj2 的结果依赖于obj.__eq__()的结果,用来判断值相等 __str__ str(obj) print(obj) '%s'…
大部份内容摘自授课老师的博客http://www.cnblogs.com/Eva-J/ OS模块复习一二 >>> import os >>> os.getcwd() # 获取当前所在目录 'D:\\PortableSoft\\Python35' >>> os.chdir('d:\\PortableSoft') # 改变工作目录,相当于cd命令 >>> os.getcwd() 'd:\\PortableSoft' >>>…
hashlib模块 用于加密相关的操作,代替md5模块和sha模块,主要提供SHA1,SHA224,SSHA256,SHA384,SHA512,MD5算法 直接看代码案例: ---------md5----------- hash = hashlib.md5() hash.update(bytes('admin',encoding='utf-8')) hash.update(bytes('123',encoding='utf-8')) print(hash.hexdigest()) print(…
本文内容 数据加密概述 Python中实现数据加密的模块简介 hashlib与hmac模块介绍 random与secrets模块介绍 base64模块介绍 pycrypto模块介绍 总结 参考文档 提示: Python 2.7中的str是字节串,而Python 3.x中的str是字符串.本文中的代码都是通过Python 2.7实现的,如果你使用的是Python 3.x,由于下面大部分加密与解密函数的参数都要求是字节对象,因此在调用下面介绍的加解密函数时,可能需要先将字符串参数转换为字节对象. 一…
一.hashlib模块 import hashlib m = hashlib.md5() m.update(b"Hello") print(m.hexdigest()) m.update(b"It's me") print(m.hexdigest()) m2 = hashlib.md5() m2.update(b"HelloIt's me") print(m.hexdigest()) s = hashlib.sha512() s.update(b…
hashlib & hmac的讲解 两个模块主要用于加密相关的操作. 1. hashlib模块 md5 具体代码如下 import hashlib ha_m5 = hashlib.md5()#创建对象 ha_m5.update('abc'.encode(encoding='utf-8'))#添加对象时需要指定编码 print(ha_m5.digest())#以二进制格式显示加密信息 print(ha_m5.hexdigest())#以十六进制格式显示加密信息(常用) sha1 具体代码如下 ha…
nodeJS之crypto模块md5和Hmac加密 原文地址:https://www.cnblogs.com/tugenhua0707/p/9128690.html 在nodejs中,可以使用crypto模块来实现各种不同的加密与解密处理,在crypto模块中包含了类似MD5或SHA-1这些散列算法,我们可以通过crypto模块来实现HMAC运算.什么是HMAC运算?HMAC的中文意思是:散列运算消息认证码:运算使用散列算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出.HMAC运算可以…
hmac模块: 1.模块初识: import hmac # h = hmac.new() #括号里要给它连个bytes类型,一个是自定义的secret_key,一个是你想进行加密的bytes # 密文 = h.digest() # hmac.compare_digest() #括号内传另外一个密文,看是否相等 h = hmac.new(b') digest = h.digest() print(digest) #>>>> b'\xa4<\r\xf8\xec0\x7f\x8ao…
用于加密相关的操作,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 hashlib模块示例: import hashlib m = hashlib.md5() # hashlib.sha1() hashlib.sha256() hashlib.sha384() hashlib.sha512()操作相同 m.update(b"Hello") m.update("你好".encode(encoding='utf-8')…
https://www.jb51.net/article/128911.htm hashlib模块简介: hashlib模块为不同的安全哈希/安全散列(Secure Hash Algorithm)和 信息摘要算法(Message Digest Algorithm)实现了一个公共的.通用的接口,也可以说是一个统一的入口.因为hashlib模块不仅仅是整合了md5和sha模块的功能,还提供了对更多中算法的函数实现,如:MD5,SHA1,SHA224,SHA256,SHA384和SHA512. has…
hashlib 是一个提供了一些流行的hash算法的 Python 标准库.其中所包括的算法有 md5, sha1, sha224, sha256, sha384, sha512等常用算法 MD5加密算法 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import hashlib """ MD5加密 """ hash_md5 = hashlib.md5() hash_md5.update(b"hello"…
Python自带的hmac模块实现了标准的Hmac算法 我们首先需要准备待计算的原始消息message,随机key,哈希算法,这里采用MD5,使用hmac的代码如下: import hmac message = b'Hello world' key = b'secret' h = hmac.new(key,message,digestmod='MD5') print(h.hexdigest()) 可见使用hmac和普通hash算法非常类似.hmac输出的长度和原始哈希算法的长度一致.需要注意传入…
6.11自我总结 1.hashlib模块(文件传输中将传输内容用指定算法进行处理) hash是一种算法(Python3.版本里使用hashlib模块代替了md5模块和sha模块,主要提供 SHA1.SHA224.SHA256.SHA384.SHA512.MD5 算法),该算法接受传入的内容,经过运算得到一串hash值. import hashlib m = hashlib.md5() #导入算法 m.update(b'2321') #输入数据的二进制模式 print(m.hexdigest())…
hmac模块和hashlib模块 一.hash是什么 ​ hash是一种算法(Python3.版本里使用hashlib模块代替了md5模块和sha模块,主要提供 SHA1.SHA224.SHA256.SHA384.SHA512.MD5 算法),该算法接受传入的内容,经过运算得到一串hash值. hash值的特点: 只要传入的内容一样,得到的hash值一样,可用于非明文密码传输时密码校验 不能由hash值返解成内容,即可以保证非明文密码的安全性 只要使用的hash算法不变,无论校验的内容有多大,得…
目录 一.hashlib模块 1.0.1 hash是什么 1.0.2 撞库破解hash算法加密 一.hashlib模块 1.0.1 hash是什么 hash是一种算法(Python3.版本里使用hashlib模块代替了md5模块和sha模块,主要提供 SHA1.SHA224.SHA256.SHA384.SHA512.MD5 算法),该算法接受传入的内容,经过运算得到一串hash值. hash值的特点: 只要传入的内容一样,得到的hash值一样,可用于非明文密码传输时密码校验 不能由hash值返解…
hmac模块: 比较两个函数的密钥是否一致: import hmac import os msg = os.urandom(32) #生成32位随机字节码 def wdc(): key = b'wdc' #密钥 ret = hmac.new(key,msg) #将字节码和key进行加密(必须都为bytes类型)创建一个对象ret digest = ret.digest() #消化 return digest #返回消耗后的密文 def yhf(): key1 = b'wdc' #密钥 ret1…
目录 1. 包 2. time模块   1. 优先掌握 2. 了解 3. datetime模块   1. 优先掌握 4. random模块   1. 优先掌握   2. 了解 5. hashlib模块和hmac模块 6. typing模块 7. requests模块 8. re模块   1. re模块的正则表达式的元字符和语法   2. 贪婪模式和非贪婪模式   3. 匹配邮箱实例   4. re模块中的常用功能函数   5. 修饰符 re.S   6. 补充 目录 \1. 包 1. 优先掌握…
目录 第十章.hashlib模块和hmac模块 一.hashlib模块 二.hash模块 第十章.hashlib模块和hmac模块 一.hashlib模块 hash是一种算法,接收传入的内容,经过运算得到的一串hash值 hash的特点: 具有唯一性 安全性,可以用于保存非明文密码 无论传入的什么内容,返回的hash值长度都是固定的 import hashlib m=hashlib.md5() #创建了hash对象 print(type(m)) #<class '_hashlib.HASH'>…
hmac模块的作用: 用于验证信息的完整性. 1.hmac消息签名(默认使用MD5加算法) #!/usr/bin/env python # -*- coding: utf-8 -*- import hmac #默认使用是md5算法 digest_maker = hmac.new('secret-shared-key'.encode('utf-8')) with open('content.txt', 'rb') as f: while True: block = f.read(1024) if…
hashlib模块和hmac模块 hashlib模块 一.导入方式 import hashlib 二.作用 无论你丢什么字符串,他都会返回一串 固定长度的字符串 三.模块功能 3.1 经常使用 import hashlib m = hashlib.md5() #生成一个对象 m.update(b'123') m.update(b'456') print(m.hexdigest()) --------------------------------------------------------…
hashlib模块用于加密相关的操作.在Python 3.x里代替了md5模块和sha模块,主要提供 SHA1.SHA224.SHA256.SHA384.SHA512 .MD5 算法.如果包含中文字符的话,给字符加上编码.encode('utf-8') md5加密 import hashlib h = hashlib.md5() h.update(b'123456') print(h.hexdigest()) #输出 e10adc3949ba59abbe56e057f20f883e 注意:upd…
hmac(hex-based message authentication code)算法在计算哈希的过程中混入了key(实际上就是加盐),和hashlib模块中的普通加密算法相比,它能够防止密码被撞库破解,安全性更高. hmac模块的使用: 导入模块 import hmac new(key,msg=None,digestmod)方法 创建哈希对象 key和digestmod参数必须指定,key和msg(需要加密的内容)均为bytes类型,digestmod指定加密算法,比如'md5','sha…
目录 IO模型介绍 阻塞IO(blocking IO) 非阻塞IO(non-blocking IO) 多路复用IO(IO multiplexing) 异步IO(Asynchronous I/O) IO模型比较分析 selectors模块 铁乐学python_Day44_IO多路复用 IO模型介绍 blocking IO 阻塞IO nonblocking IO 非阻塞IO IO multiplexing IO多路复用 signal driven IO 信号驱动IO asynchronous IO…
铁乐学python_Day43_协程 引子 之前我们学习了线程.进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位. 按道理来说我们已经算是把cpu的利用率提高很多了. 但是我们知道无论是创建多进程还是创建多线程来解决问题, 都要消耗一定的时间来创建进程.创建线程.以及管理他们之间的切换. 随着我们对于效率的追求不断提高,基于单线程来实现并发又成为一个新的课题, 即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发. 这样就可以节省创建线进程所消耗的时间…
铁乐学python_Day42_线程池 concurrent.futures 异步调用模块 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor:线程池,提供异步调用 ProcessPoolExecutor: 进程池,提供异步调用 基本方法 submit(fn, *args, **kwargs) 异步提交任务 map(func, *iterables, timeout=None, chunksize=1) 取代for循环submit的操作 s…