前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python文档精要研读系列:hash函数

Python文档精要研读系列:hash函数

作者头像
Python中文社区
发布2018-01-31 12:55:34
1.1K0
发布2018-01-31 12:55:34
举报
文章被收录于专栏:Python中文社区

hash(object)

Return the hash value of the object (if it has one). Hash values are integers. They are used to quickly compare dictionary keys during a dictionary lookup. Numeric values that compare equal have the same hash value (even if they are of different types, as is the case for 1 and 1.0).

Python中的hash函数用于求取一个字符串或者数值的哈希值,由于Python中任何数据类型都可以转换为字符串,所以我们利用这个函数来进行简单的哈希值计算,比如:

hash('test')

如此便可以求得字符串'test'的哈希值,同样,如果是数值的话:

hash(1)

不但如此,我们也可以求取list的哈希值:

hash(str([1,2,3]))

也可以求得字典的,但是由于字典本身无序(集合也是如此),所以需要加一些小的变动:

hash(str(sorted({'1':1})))

先将字典排序,而后转为字符串,最后求得哈希值。 倘若是字典嵌套字典,可以对其中的每一个子字典求哈希值,而后求和:

代码语言:javascript
复制
#Return hash for a dict which may contain a dict as its value
def DHash(Dict):
    dh=0
    for tmp in Dict:
        if isinstance(Dict[tmp],dict):
            dh+=hash(tmp)+hash(str(sorted(Dict[tmp],key=lambda d: d[0])))
        else:
            dh+=hash(tmp)+hash(str(Dict[tmp]))`
    return dh

名词解释

hash

散列函数(或散列算法,又称哈希函数,英语:Hash Function)是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的指纹。散列值通常用来代表一个短的随机字母和数字组成的字符串。好的散列函数在输入域中很少出现散列冲突。在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到。

MD4

MD4是麻省理工学院教授Ronald Rivest于1990年设计的一种信息摘要算法。它是一种用来测试信息完整性的密码散列函数的实行。其摘要长度为128位。这个算法影响了后来的算法如MD5、SHA家族和RIPEMD等。

MD5

MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由罗纳德·李维斯特设计,于1992年公开,用以替换MD4算法。这套算法的程序在 RFC 1321 中被加以规范。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • hash(object)
  • 名词解释
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档