对于hashlib中,加123456加密,拆开加密和整体加密,其结果是一样的。
对于密码加密,可以使用加盐的操作来提高安全性。
import hashlib
def make_hash_password(the_str:str):
if not isinstance(the_str,str):
raise ValueError('传递的值必须是字符串')
if len(the_str)<3:
raise ValueError('加密的字符串必须不短于3')
sha_256 = hashlib.sha256()
dic = {
0:'2H&',
1:'g$9',
2:'&Z0',
3:'p@5', #0-3 加3个字符
4:'Bh6*',
5:'K3#2w',
6:'J0$9dW', #4-6 加对应的数值的字符数
'last':'h9@3K6Z' # 7或以上,加7个字符数
}
strs = ''
for i in range(len(the_str)):
key = dic.get(i,dic.get('last'))
sha_256.update(key.encode('utf-8'))
sha_256.update(the_str[i].encode('utf-8'))
strs+=key
strs+=the_str[i]
return sha_256.hexdigest()
if __name__ == '__main__':
has_pwd = make_hash_password('123')
print(has_pwd
对于大文件,为了确保下载的文件是否正常,常常使用hashlib来做文件一致性校验。在下载后,可以对比hash值是否一致来判断文件是否损坏或被修改。(国外的软件商一般都有这个hash值校验,保证下载的软件是正版没有被改动的)
import hashlib
m = hashlib.md5()
with open(r'G:/logging模块配图.png','rb') as f:
for line in f:
m.update(line)
print(m.hexdigest())