杂凑运算
概念又称hash函数,Hash函数(也称杂凑函数或杂凑算法)就是把任意长的输入消息串变化成固定长的输出串的一种函数。这个输出串称为该消息的杂凑值。 就是一种可将一个 key 对应到一个索引的函数,一个可能的杂凑函数为 h(x)=key % 100 , (% 传回 key 除以 100 的余数 ) ,这个函数仅传回 key 的末两位数。 若一个特定的 key ,被杂凑到 i ,就降这个 key 及其对应到的纪录吋放在 S[i] 。 若一个特定的 key ,被杂凑到 i ,就降这个 key 及其对应到的纪录吋放在 S[i] 。
杂凑函数是信息安全中一个非常重要的工具,它对一个任意长度的消息m施加操作,返回一个固定长度的杂凑值h(m),杂凑函数是公开的,对处理过程不用保密...
现代密码学中的应用密码杂凑函数(有时称作消息摘要函数,杂凑函数又称散列函数或哈希函数)不一定使用到钥匙,但和许多重要的密码算法相关。它将输入资料(通常是一整份文件)输出成较短的固定长度杂凑值,这个过程是单向的,逆向操作难以完成,而且碰撞(两个不同的输入产生相同的杂凑值)发生的机率非常小。
信息认证码或押码(Message authentication codes, MACs)很类似密码杂凑函数,除了接收方额外使用秘密钥匙来认证杂凑值。
一般用于产生消息摘要,密钥加密等.
一个安全的杂凑函数应该至少满足以下几个条件:
①输入长度是任意的;
②输出长度是固定的,根据目前的计算技术应至少取128bits长,以便抵抗生日攻击;
③对每一个给定的输入,计算输出即杂凑值是很容易的
④给定杂凑函数的描述,找到两个不同的输入消息杂凑到同一个值是计算上不可行的,或给定杂凑函数的描述和一个随机选择的消息,找到另一个与该消息不同的消息使得它们杂凑到同一个值是计算上不可行的。
Hash函数主要用于完整性校验和提高数字签名的有效性,目前已有很多方案。这些算法都是伪随机函数,任何杂凑值都是等可能的。输出并不以可辨别的方式依赖于输入;在任何输入串中单个比特的变化,将会导致输出比特串中大约一半的比特发生变化。
所谓杂凑冲撞指两个完全不同的讯息经杂凑函数计算得出完全相同的杂凑值。根据鸽巢原理,以有长度限制的杂凑函数计算没有长度限制的讯息是必然会有冲撞情况出现的。
目前常见的杂凑算法算法名称
输出大小 (bits)
内部大小
区块大小
长度大小
字符尺寸
碰撞情形
HAVAL
256/224/192/160/128
256
1024
64
32
是
MD2
128
384
128
No
8
大多数
MD4
128
128
512
64
32
是
MD5
128
128
512
64
32
是
PANAMA
256
8736
256
否
32
是
RadioGatún
Arbitrarily long
58 words
3 words
否
1-64
否
RIPEMD
128
128
512
64
32
是
RIPEMD-128/256
128/256
128/256
512
64
32
否
RIPEMD-160/320
160/320
160/320
512
64
32
否
SHA-0
160
160
512
64
32
是
SHA-1
160
160
512
64
32
With flaws
SHA-256/224
256/224
256
512
64
32
否
SHA-512/384
512/384
512
1024
128
64
否
Tiger(2)-192/160/128
192/160/128
192
512
64
64
否
WHIRLPOOL
512
512
512
256
8
否