首页 > 编程语言 >python中的hashlib模块

python中的hashlib模块

时间:2023-03-16 19:34:32浏览次数:44  
标签:hashlib python 202cb962ac59075b964b07152d234b70 update hexdigest 模块 arg md5

md5是一种常见不可逆加密算法,使用简单,计算速度快,在很多场景下都会用到,比如:给用户上传的文件命名,数据库中保存的用户密码,下载文件后检验文件是否正确等。

官网:https://docs.python.org/3/library/hashlib.html?highlight=hashlib#credits

md5()方法使用

update(arg)传入arg对象来更新hash的对象。必须注意的是,该方法只接受byte类型,否则会报错。这就是要在参数前添加b来转换类型的原因。
同时要注意,重复调用update(arg)方法,是会将传入的arg参数进行拼接,而不是覆盖。也就是说,m.update(a); m.update(b) 等价于m.update(a+b)。
hexdigest()在英语中hex有十六进制的意思,因此该方法是将hash中的数据转换成数据,其中只包含十六进制的数字。

>>> import hashlib
>>> m = hashlib.md5()
>>> m.update(b'123')
>>> m.hexdigest()
'202cb962ac59075b964b07152d234b70'
 
# 或者可以这样(最常见的写法,常用于图片的命名)
>>> hashlib.md5(b'123').hexdigest()
'202cb962ac59075b964b07152d234b70'
 
# 也可以使用hash.new()这个一般方法,hashlib.new(name[, data]),name传入的是哈希加密算法的名称,如md5
>>> hashlib.new('md5', b'123').hexdigest()
'202cb962ac59075b964b07152d234b70'

以上是对于英文进行md5加密的,如果要对中文进行加密,发现按照上面来写会报错,原因在于字符转码问题,要如下写:

>>> import hashlib
>>> data = '你好'
>>> hashlib.md5(data.encode(encoding='UTF-8')).hexdigest()
'7eca689f0d3389d9dea66ae112e5cfd7'

 

转载自:https://www.cnblogs.com/lanston1/p/11025881.html

 

标签:hashlib,python,202cb962ac59075b964b07152d234b70,update,hexdigest,模块,arg,md5
From: https://www.cnblogs.com/shaoyishi/p/17223880.html

相关文章

  • 使用几何光学实现空间相对定位(python+opencv)
    我从2019年3月份开始学习python,在有一定的基础后,我看到学校有一个物理实验竞赛:北京联合大学第十二届物理实验竞赛,其中有一个题目是空间定位,即利用物理原理,自行搭建实验......
  • 调用AI聊天机器人自动回复信息(Python)
    “人类正从IT时代走向DT时代”,随着移动互联网技术持续高速发展,海量数据计算存储、智能数据挖掘、低时延数据传送和可靠网络安全已经成为软硬件技术飞速发展的催化剂,也推......
  • 抓取王者荣耀英雄列表的爬虫笔记(python+requests)
    在开始这个内容之前,我们先来一张效果图:实现它,需要几个过程:调用王者荣耀助手的数据接口获取所有英雄的图片通过迭代,把所有图片转换成二进制数据流把这些数据导入MySQL数据库......
  • Python startswith()和endswith()方法
    startswith()方法startswith()方法用于检索字符串是否以指定字符串开头,如果是返回True;反之返回False。endswith()方法endswith()方法用于检索字符串是否以指定字符......
  • python - 面向对象编程
    一、对象与过程的概念python中的两大范式:1.面向过程2.面向对象他们两个都不是新的技术,而是一种做事的思维方式1.面向过程:根据业务逻辑从上到下写垒代码面向过程核心是......
  • Python根据图片拍摄日期等整理重命名
    关键词:exif、exifread等等。最近在整理多年拍摄的图片,希望按照拍摄时间进行排序整理制作相册。但是有的图片有水印显示拍摄日期;有的文件创建日期因为搬运创建日期和修改......
  • Python基础数据类型
    一、字符串1、字符串赋值1.1直接赋值使用'',"",''''''(单、双、三引号)和“=”赋值符号,进行字符串赋值注意:三引号形式的字符串支持换行1.2 通过input()方法 2、字......
  • 【Irrlicht引擎 笔记】Core模块
    irr::core向量、平面、数组、列表等基础类都可以在这个命名空间中找到irr::coreirr::core::vector2d<T>irr::core::vector3d<T>irr::core::vector2d<T>1.判断......
  • Python装饰器深入理解
    在本博客的前面部分其实已经介绍过Python中装饰器的基本使用了(Python迭代器、生成器、装饰器的使用,Python@函数装饰器以及super()父类继承 ),不过还有一些深入的知识点(......
  • python并行计算demo,用于求0~n之间的素数之和
     想试试服务器的并行计算能力,就让cpu慢慢计算,计算0~n之间所有素数之和设置target为结尾,num_of_processors为进程数,即可开始跑如下所示frommultiprocessingimportP......