散列函数:

任何一种能将任意大小数据映射为固定大小数据的函数,都能被称为散列函数。散列函数的返回值称为散列值、散列码,摘要或者简单散列。

单向散列函数:

为加密和验证信息完整性的函数,又称为“杂奏函数”或“信息摘要函数”。对于一个给定的散列值,很难计算其原始输入。

常用的散列函数算法:

MD5:

2004年的国际密码讨论年会(CRYPTO)尾声,来自山东大学的王小云及其研究同事展示了MD5、SHA-0及其他相关杂凑函数的杂凑冲撞。所谓杂凑冲撞指两个完全不同的讯息经杂凑函数计算得出完全相同的杂凑值。根据鸽巢原理,以有长度限制的杂凑函数计算没有长度限制的讯息是必然会有冲撞情况出现的。可是一直以来,电脑保安专家一直无法给出实际例子,而王小云提供了第一个碰撞范例。

理论上,每个哈希函数都会有这样的碰撞,被找到是迟早的但是足以构成安全威胁,所以大家现在都加盐了。

SHA:

SHA(Secure Hash Algorithm 安全哈希算法)系列算法是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数。