散列

散列

散列的意义:将无限空间的值映射到有限空间。
对于数字,我们能通过取模的方式将实数映射到指定区间。然后快速的通过数组下标查找到对应的数据。而对于其他非数字的值(在计算机实现里,所有值都是数值)转换成数值进行运算。
而一个好的散列函数需要有一下特征:
1. 输入可任意长度,输出是固定长度
2. 不可逆,单向性。给定Hash函数和hash值不能或者很难反算出原始值。
3. 函数性。相同输入得到相同输出。
4. 计算速度要快。如果hash函数计算困难,很难应用到实际问题。
5. 无冲突性。由于输入的区间比输出的区间大,所以hash函数冲突是无法避免的,而当给定Hash函数,一个Hash值和一个与其对应的原始值时,不能或者很难计算出另一些跟其冲突的原始值。
6. 散列要均匀。散列结果尽可能的分布整个区间。
7. 原始值一点变化能引起hash值很大的变化。

算法输出(位)描述
MD2128(RFC 1319)
MD4MD4(RFC 1320),Message Digest(消息摘要) 的缩写,基于 32位操作数的位操作来实现的。
MD5MD5(RFC 1321)
SHA-0160SHA-0(RFC 6194),安全杂凑标准(Secure Hash Standard) 的缩写
SHA-1160(RFC 3174)
SHA-256256
SHA-224224
SHA-512512
SHA-384384
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值