hashlib提供了常见的摘要算法,如md5和sha1等等。
那么什么是摘要算法呢?摘要算法又称为哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。
注意:摘要算法不是一个解密算法。(摘要算法,检测一个字符串是否发生了变化)
应涂:1.做文件校验
2.登录密码
密码不能解密,但可以撞库,用‘加盐’的方法就可以解决撞库的问题。所有以后设置密码的时候要设置的复杂一点。
1、什么叫hash:hash是一种算法,该算法接受传入的内容,经过运算得到一串hash值 2、hash值的特点是: 2.1 只要传入的内容一样,得到的hash值必然一样=====>要用明文传输密码文件完整性校验 2.2 不能由hash值返解成内容=======》把密码做成hash值,不应该在网络传输明文密码 2.3 只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的
示例:
# import hashlib # # m=hashlib.md5() # m.update('hello'.encode('utf-8')) # m.update('world'.encode('utf-8')) # m.update('egon'.encode('utf-8')) # print(m.hexdigest()) #3801fab9b8c8d9fcb481017969843ed5 import hashlib m=hashlib.md5() m.update('h'.encode('utf-8')) m.update('e'.encode('utf-8')) m.update('lloworld'.encode('utf-8')) m.update('egon'.encode('utf-8')) print(m.hexdigest()) #3801fab9b8c8d9fcb481017969843ed5 # 密码加盐 import hashlib pwd='alex3714' m=hashlib.md5() m.update(pwd.encode('utf-8')) m.update('天'.encode('utf-8')) m.update('小雨一米五'.encode('utf-8')) print(m.hexdigest()) #ae3d07cda315e950e044a6bf4f824ca3
############################################################################
import hashlib m=hashlib.md5() m.update('helloworld'.encode('utf-8')) print(m.hexdigest()) #fc5e038d38a57032085441e7fe7010b0 m=hashlib.sha256() m.update('helloworld'.encode('utf-8')) print(m.hexdigest()) #936a185caaa266bb9cbe981e9e05cb78cd732b0b3280eb944412bb6f8f8f07af # # m=hashlib.sha512() m.update('helloworld'.encode('utf-8')) print(m.hexdigest()) #1594244d52f2d8c12b142bb61f47bc2eaf503d6d9ca8480cae9fcf112f66e4967dc5e8fa98285e36db8af1b8ffa8b84cb15e0fbcf836c3deb803c13f37659a60 # import hmac m=hmac.new('天王盖地虎,小鸡炖模块'.encode('utf-8')) m.update('alex3814'.encode('utf-8')) print(m.hexdigest())