zl程序教程

您现在的位置是:首页 >  其他

当前栏目

4-07python语法基础-内置模块-hashlib模块

基础模块 语法 内置 hashlib
2023-09-14 09:00:31 时间

hashlib模块

import hashlib

# 不加盐
md5 = hashlib.md5()  # 创建一个md5算法的对象
md5.update('123456'.encode('utf-8'))
print(md5.hexdigest())  # 这个值永远不会变,容易被人暴力破解,要加盐

# 固定加盐
md5 = hashlib.md5('SOS'.encode('utf-8'))  # 固定的盐还是可以破解的,
md5.update('123456'.encode('utf-8'))
print(md5.hexdigest())

# 动态加盐
user = 'sos'
print(user[1::-1])
md5 = hashlib.md5(user[1::-1].encode('utf-8'))
md5.update('123456'.encode('utf-8'))
print(md5.hexdigest())

# sha算法,和md5的用法一样,不过常用的还是md5,sha算法会慢一点
sha1 = hashlib.sha1('SOS'.encode('utf-8'))
sha1.update('123456'.encode('utf-8'))
print(sha1.hexdigest())

# 文件一致性校验
def md5file(file):
    md5=hashlib.md5()  # 做文件一致性校验不需要加盐
    with open(file,'rb') as f:
        # text = f.read()
        # md5.update(text)
        # 对于大文件,不能一次性读取,
        while True:
            text = f.read(1024)  # 每次读取1024字节
            if text:
                md5.update(text)
            else:
                break

    return md5.hexdigest()  # 一次性读取和循环读取的结果是一样的


print('*' * 50)
print(md5file('test.txt'))
print(md5file('text2.txt'))