hashlib 模块 摘要算法

应用于用户登陆,对密码进行加密操作,

  #文件操作
    # hashlib 摘要算法
      #md5 算法: 是32位的16进制组成的数字字符组成的字符串
        #应用最广的摘要算法
        #效率高,相对不复杂,如果只是传统摘要不安全
      #sha 算法 :40位的16进制组成的数字字符组成的字符串
        #sha算法比md5算法要更加复杂
        #且sha n 算法越大越安全,耗时越久

普通用法

from hashlib
def get_md5(s):
    md5_obj = hashlib.md5()
    md5_obj.update(s.encode("utf-8"))
    ret = md5_obj.hexdigest()
    return ret
l1 = get_md5("alex123")
print(l1)   #b75bd008d5fecb1f50cf026532e8ae67

为防止非法人员恶意盗取

加盐用法

# def get_md5(s):
#     md5_obj = hashlib.md5("盐".encode("utf-8"))    #盐是不变的
#     md5_obj.update(s.encode("utf-8"))
#     ret = md5_obj.hexdigest()
#     return ret

动态加盐

# def get_md5(name,pwd):
#     md5_obj = hashlib.md5(name.encode("utf-8"))
#     md5_obj.update(pwd.encode("utf-8"))
#     ret = md5_obj.hexdigest()
#     return ret
# l1 = get_md5("alex","alex123")
# print(l1)

 

def get_md5(name,pwd):
    md5_obj = hashlib.md5((name+pwd).encode("utf-8"))
    return md5_obj.hexdigest()
print(get_md5("alex","alex123"))
#判断文件的一致性校验
# md5_obj = hashlib.md5()
# md5_obj.update("hello,world".encode("utf-8"))
# ret = md5_obj.hexdigest()
# print(ret)

# md5_obj = hashlib.md5()

判断视频文件的一致性

# import os,hashlib
# def get_file_md5(file_path,buffer= 1024):
#     md5_obj = hashlib.md5()
#     file_size = os.path.getsize(file_path)
#     with open(file_path,"rb") as f:
#         while file_size:
#             count = f.read(buffer)
#             md5_obj.update(count)
#             file_size -= len(count)
#         return md5_obj.hexdigest()

使用md5与 sha n系列用法一样,使用sha n 越大越安全 

 

posted @ 2018-09-06 19:31  云丛  阅读(137)  评论(0编辑  收藏  举报