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

  #文件操作
    # 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 越大越安全

最新文章

  1. '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp error
  2. caffe-mnist别手写数字
  3. PHP中$_SERVER的详细参数与说明
  4. C#设计模式——桥接模式(Bridge Pattern)
  5. angular 指令——时钟范例
  6. skyline TerraExplorer fly设置相对路径的方法
  7. leetcode 组合题
  8. HDU-1716 排列2 (DFS)
  9. oracle 分组后取每组第一条数据
  10. hdu--1013--Digital Roots(字符串)
  11. POJ 1410 Intersection (线段和矩形相交)
  12. linux 一键安装lnmp环境
  13. HttpClient设置连接超时时间
  14. linux 命令之netstat
  15. Vue之vue自动化工具快速搭建单页项目目录
  16. vue写后台管理系统问题概述和解决方案
  17. 微信小程序的json遍历
  18. ip辅助和别名的区别
  19. 设置WebApi里面命名空间参数
  20. 对HTTP和TCP的理解

热门文章

  1. requests库session保持持久会话
  2. P1015 [NOIP1999 普及组] 回文数
  3. k8s笔记--驱逐与重调度,以及deschueduler的一次实验
  4. 02网络编程( socket套接字+TCP粘包 )
  5. Back to Basics: RAII and The Rule of Zero
  6. 如何删除远端已经推送的Commit记录???(Git版本回退)
  7. [旧][Android] LayoutInflater 工作流程
  8. SRv6规模部署,离不开测试技术保驾护航!
  9. .大内高手专栏: NET中间语言(IL)
  10. 在不受支持的 Mac 上安装 macOS Monterey 12(OpenCore Patcher)