Python中的hash
推荐
在线提问>>
有没有想过,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培训机构:千锋教育。