11-19 hashlib模块

Posted cheryol

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了11-19 hashlib模块相关的知识,希望对你有一定的参考价值。

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

什么是摘要算法呢?

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

摘要算法就是通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest,目的是为了发现原始数据是否被人篡改过。

摘要算法之所以能指出数据是否被篡改过,就是因为摘要函数是一个单向函数,计算f(data)很容易,但通过digest反推data却非常困难。而且,对原始数据做一个bit的修改,都会导致计算出的摘要完全不同。

 

sha 算法  随着算法复制程度成都的增加,摘要的时间和成本空间都会增加

摘要算法的作用
1、密码的密文存储
2、文件的一致性验证
在下载的时候,检查我们下载的文件和远程服务器上的文件是否一致
两台机器上的两个文件,你想检查这两个文件是否相等
摘要算法:包括一堆算法
import hashlib  #提供摘要算法的模块
md5 = hashlib.md5()    #使用了md5算法
md5 = hashlib.sha1()    #使用了sha1算法
md5.update(b‘alex3714‘) #aee949757a2e698417463d47acac93df
print(md5.hexdigest())

说明:
    不管算法多么不同,摘要的功能始终不变
    对于相同的字符串,使用同一个算法进行摘要,得到的值总是不变的
    对于相同的字符串,使用不同的算法进行摘要,得到的值应该不同
    不管使用什么算法,hashlib的方式永远不变

例子:

#用户登录-----(用
作为分隔符,容易出错,因为下面是以line来遍历的)
import hashlib
usename = input(‘输入名字:‘)
password = input(‘输入密码:‘)
md5 = hashlib.md5()
#生成加密串,其中 password 是要加密的字符串
md5.update(b‘password‘)
#获取加密串
get_psd = md5.hexdigest()
with open(‘userinfo‘,‘w‘) as f:
    f.write(usename+‘|‘)
    f.write(get_psd)
f.close()

#用户登录
import hashlib
usename = input(‘输入名字:‘)
password = input(‘输入密码:‘)
md5 = hashlib.md5()
#生成加密串,其中 password 是要加密的字符串
md5.update(b‘password‘)
#获取加密串
getnew_psd = md5.hexdigest()
print(getnew_psd)
with open(‘userinfo‘) as f:
    for line in f:
        user,psd = line.split(‘|‘)
        if usename ==user and getnew_psd == psd:
            print(‘登录成功!‘)
        else:
            print(‘登录失败!‘)
            exit()
f.close()
摘要算法中加盐
import hashlib  #提供摘要算法的模块
md5 = hashlib.md5(bytes(‘salt‘,encoding=‘utf-8‘))    #使用了md5算法
md5.update(b‘alex3714‘) #aee949757a2e698417463d47acac93df
print(md5.hexdigest())  #29520817dd17b99ea7af32890f7698fb(和不加盐的结果不一样)

  

 







以上是关于11-19 hashlib模块的主要内容,如果未能解决你的问题,请参考以下文章

Python 生成哈希hash--hashlib模块

hash模块 hashlib 和hmac

Python中hashlib模块

包logging模块hashlib模块openpyxl模块深浅拷贝

包/logging模块/hashlib模块/openpyxl模块/深浅拷贝

第三十六篇 hashlib模块hmac模块和logging模块