2021/1/11 hashlib模块(python)

hashlib模块(主要作用于密码加密和文件一致性校验)

hashlib加密模式

1.将一个bytes型数据结构 通过hashlib进行加密返回 一个非明文数据

2.过程不可逆

3.相同的bytes类型的数据通过相同加密方法得到的数据绝对相同

4.不相同的bytes类型数据通过相同加密方法得到的数据绝对不同

hashlib模块中

hashlib.md5().update()方法将bytes型数据进行磁盘存储,创造一个磁盘空间,不占用内存。

hashlib.md5().hexdigest()方法将update容器内的bytes数据进行加密

MD5信息摘要算法

import hashlib
ret = hashlib.md5()
num = "123"
num = num.encode("utf-8")
ret.update(num)
print(ret.hexdigest())

固定加盐模式,进行加密对原有数加固定字符来提高原密码的复杂度,防止撞库

import hashlib
ret = hashlib.md5("**@@".encode('utf-8'))
num = "123"
num = num.encode("utf-8")
ret.update(num)
print(ret.hexdigest())

动态加盐模式,进行加密对原有数据加动态的字符来提高密码的复杂度,防止撞库

import hashlib
username = input("输入账号").strip()
password = input("输入密码").strip()
ret = hashlib.md5(username[::2].encode('utf-8'))

ret.update(password.encode('utf-8'))
print(ret.hexdigest())

其它密码加密用法与MD5相同

其它密码主要为sha系列,后面数字版本越大,加密模式越复杂,效率越低

 

文件一致性校验

普通版

import hashlib
ret = hashlib.md5()
with open('1.txt', 'rb') as f1:
    rb = f1.read()

ret.update(rb)
print(ret.hexdigest())


ret = hashlib.md5()
with open('2.txt', 'rb') as f1:
    rb = f1.read()

ret.update(rb)
print(ret.hexdigest())

循环读取版,内存使用率越低

import hashlib
def md5_file(file):
    ret = hashlib.md5()
    with open(file, mode='rb') as f1:
        while 1:
            context = f1.read(1024)
            if context:
                ret.update(context)
            else:
                return ret.hexdigest()

 

posted @ 2021-01-11 10:51  ping_sen  阅读(80)  评论(0)    收藏  举报