IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> python3 hashlib.md5使用总结 -> 正文阅读

[数据结构与算法]python3 hashlib.md5使用总结

hash(散列函数)的百科

hash(散列函数)百科 :(https://baike.baidu.com/item/Hash/390310?fr=aladdin)

python3中使用hash()函数

  • python3中使用hash()函数大体分为两种方式:
    1.使用python3自带的hash函数;
    2.使用第三方hash库中的函数。
  • 对于不同的处理内容,选择方案也有所区别,比如对字符串和图片做哈希处理时需要进行的编码处理方式就稍有区别,下面我们具体来看。

python3自带的hash()函数

废话不多说,先来看代码:

  • 基本使用方法
>>> hash(123456)
123456
>>> hash('123456')
-1939021130
>>> hash('abcdef')
995066358

python3自带的hash()函数不需要import,可以直接使用。

  • 存在的局限性问题
    python3自带的hash()函数在不同终端窗口,对同一个内容得到的哈希值不同。
    也就是说,同样的字符串,在终端中,关闭终端后重新打开再次运行hash()函数,得到的是两个哈希值;而对于写好的python文件,运行两次能够得到两个哈希值,运行多次得到多个哈希值,效果如下:
C:\Users\pc>python
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> hash('12345')
-1632335623
>>> ^Z

C:\Users\pc>python
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> hash('12345')
1383201171
>>> ^Z

C:\Users\pc>python
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> hash('12345')
1544562322
>>>

由于上述问题的存在,python3自带的hash()函数很难用于哈希值重复使用,比如基于哈希判断等等。

第三方hash库函数

推荐使用hashlib库的md5摘要算法
详见廖老师博客:https://www.liaoxuefeng.com/wiki/1016959663602400/1017686752491744

使用方法如下:

1.针对字符串   
import hashlib  
data = 'this is a string'  
hashlib.md5(data.encode(encoding='UTF-8')).hexdigest()  

2.针对图片文件(图片的二进制数据)  
with open("./test.jpg", "rb") as file:  
	image = file.read()  
	print(hashlib.md5(image).hexdigest())  

运行结果:

>>> import hashlib
>>> data = 'this is a string'
>>> hashlib.md5(data.encode(encoding='UTF-8')).hexdigest()
'b37e16c620c055cf8207b999e3270e9b'
>>>

总结

  1. python3自带hash()函数不同终端窗口不一致;
  2. 第三方库hashlib.md5摘要算法用途更广更方便。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-05 12:17:23  更:2021-12-05 12:19:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 14:23:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码