Hash
,俗称哈希
,也叫散列
,是一种将任意长度的数据压缩到某一固定长度的数据摘要的算法。
目录标题
Hash算法具有几个重要的特性
1・不可逆性(从Hash值反推出原消息是不可能的)
2・抗冲突型(指定消息M1,不存在另一个消息M2,使得Hash(M1)=Hash(M2))
3・分布均匀性(Hash算法的结果是均匀分布的)
常见的Hash算法
MD5 (Message-Digest Algorithm 5)
128bit的报文摘要(密文)(16字节)(1字符4bit,共32字符)
SHA-1
160bit的报文摘要(密文)(20字节)(1字符4bit,共40字符)
SHA-1主要有两种用途
一个是加密,一个是数据完整性校验
最新资料显示,理论上对SHA-1进行哈希碰撞的攻击可以在2^51(2的51次方=2251799813685248)左右的次数内实现
由于SHA-1不是足够的安全,现在美国的很多政府部门都开始不采用SHA-1而采用SHA-2(目前还没有发现其hash碰撞的存在)
Linux kernel开创者和Git的开发者——Linus说,Git使用了SHA-1并非是为了安全性,而是为了数据的完整性;
它可以保证,在很多年后,你重新checkout某个commit时,一定是它多年前的当时的状态,完全一摸一样,完全值得信任。
SHA-2家族
SHA-224、SHA-256
、SHA-384和SHA-512等,分别产生224位、256位、384位和512位的散列结果。
SHA-3家族
SHA-3是NIST于2015年正式发布的全新哈希标准,由Keccak算法演变而来,设计初衷是为了替代因潜在安全隐患而受到质疑的SHA-2系列。SHA-3同样提供了多种散列长度,包括SHA3-224、SHA3-256、SHA3-384和SHA3-512。
相关名词解释
SHA(secure hash algorithm)
又叫:hash values / hash codes / hash sums / checksums / simply hashes
加密哈希函数(cryptographic hash function)
A hash function is any algorithm or subroutine that maps large data sets of variable length, called keys, to smaller data sets of a fixed length;
哈希碰撞(hash collision)
不同的两块数据有相同的hash值
雪崩效应(Avalanche effect)
在加密中,源数据一点儿的差异将会得到完全不同的加密后的密码,这种现象叫做“雪崩效应”