当前位置:首页  >  技术干货  >  Python技术干货  > Python中的hash

Python中的hash

来源:千锋教育
发布时间:2023-11-06 13:23:57
分享

有没有想过,Python中的字典为什么这么高效稳定。原因是他是建立在hash表上。了解Python中的hash表有助于更好的理解Python,因为Python中字典无处不在。

hash函数

哈希函数是一个可以将任意长度的数据块映射到固定长度的值,这个步骤称为hash,也就是散列。

hash函数有三个主要的特征:

计算迅速:计算一个数据块的hash值非常快

确定性:相同用字符串会产生相同的hash值

结果固定长度:不管输入的是,一个字节还是十个字节,或者上万个字节,结果总是预先确定的长度。

另一个特征在hash函数中非常普遍,即他们是单方向的:通过函数实现后,原始数据丢失了,我们可以通过字符串得到一个hash值,但不能通过一个hash也就是散列得到原始的字符串(因为有对数据降维的方法会造成数据的丢失)。这种特性并不是对所有hash函数的强制性规定,但是当需要加密安全时,这种性质还是挺好用的。

一些比较受欢迎的算法包括:MD5、SHA-1、SHA-2,NTLM.

关于hash的一些使用方法

很多东西都依赖hash,hash表就是其中一例,另一些用法是出于加密和的原因

一个具体的例子就是当你尝试从网上下载开源软件时。通常你都会发现一个关联文件,这个关联文件就是这个文件签名。这个签名仅仅是源文件的散列值它非常有用,你为你可以自己通过计算下载好的文件的散列值并与网站上提供的签名进行对比,这样就可以确认你自己下载的文件没有损坏。

另一种用法是存储用户的密码。你有没有问过你自己,当你忘掉了一个网站的登录密码的时候,你还想从这个网站上恢复登录,它只会让你重新确定一个新的登录密码而不是给你原来你选择的密码,这是因为网站并不会储存你完整的密码,而是你密码的hash值。

这么做是出于安全因素,因为如果黑客搞到了数据库的权限,他们不会知道你真实的密码,而是仅仅得到你密码的哈希值,又因为哈希函数是单向的,他们根本不可能从哈希值得到你的密码

以上内容为大家介绍了Python中的hash,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。

声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • 如何分析Python测试代码覆盖率? 在测试中,为了度量产品质量,代码覆盖率被作为一种测试结果的评判依据,在Python代码中用来分析代码覆盖率的工具当属Coverage。代码覆盖率是由特定的测试套件覆盖被测源代码的程度来度量,Cover
  • Python中sellect、poll、epoll三者的区别 selectselect最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select()返回后,该数组中就绪的文件描述符便会被内核修改标志位,使得
  • 使用python自带的xml.dom创建和解析xml python中的xml.dom模块使用的就是传统的dom解析api和方法。所以也就不写什么了,主要就是练习敲敲代码,继续熟悉python。本文通过xml.dom.minidom创建一个xml文档,然后
  • 怎么在Python装饰器中自定义功能呢? setattr和getattr操作首先我们来看下setattr和getattr这两个方法,attr是attribute的缩写,也就是属性的意思。我们搞明白了这个单词的意思之后就简单了,根据字面可以理解
  • Python之有妙用的__name__属性 前面说了,py文件分两种:用于执行的程序文件和用于导入的模块文件。当直接使用pythona.py的时候表示a.py是用于执行的程序文件,通过import/from方式导入的py文件是模块文件。__na
  • Python相对路径导入 注:如果允许,不要使用相对路径导入,很容易出错,特别是对新手而言。使用绝对路径导入,并将包放在sys.path的某个路径下就可以。假设现在有如下目录结构:$tree-fd:\pypathd:\pypa