基本知识算法
Hash,通常翻译作“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫作预映射, pre-image),经过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间一般远小于输入的空间,不一样的输入可能会散列成相同的输出,而不可能从散列值来惟一的肯定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。安全
经常使用hash算法的介绍:函数
(1)MD4翻译
MD4(RFC 1320)是 MIT 的Ronald L. Rivest在 1990 年设计的,MD 是 Message Digest(消息摘要) 的缩写。它适用在32位字长的处理器上用高速软件实现——它是基于 32位操做数的位操做来实现的。设计
(2)MD5hash
MD5(RFC 1321)是 Rivest 于1991年对MD4的改进版本。它对输入仍以512位分组,其输出是4个32位字的级联,与 MD4 相同。MD5比MD4来得复杂,而且速度较之要慢一点,但更安全,在抗分析和抗差分方面表现更好。it
(3)SHA-1及其余class
SHA1是由NIST NSA设计为同DSA一块儿使用的,它对长度小于264的输入,产生长度为160bit的散列值,所以抗穷举(brute-force)性更好。SHA-1 设计时基于和MD4相同原理,而且模仿了该算法。原理