摘要(Hash)算法总结

数据摘要算法具有不可逆性, 其主要功能有数据签名, 数据完整性校验等. 下面介绍常见的数据摘要算法:

一、CRC8、CRC16、CRC32

 CRC(Cyclic Redundancy Check,循环冗余校验)算法出现时间较长,应用广泛,尤其是通讯领域;
 它产生一个4字节(32位)的校验值,一般是以8位十六进制数,如FA 12 CD 45等。
 CRC算法的优点在于简便、速度快,严格的来说,CRC更应该被称为数据校验算法,但其功能与数据摘要算法类似,因此也作为测试的可选算法。

二、MD2 、MD4、MD5

Message-Digest Algorithm

创建者:Ron Rivest(RSA公司)在1992年提出;
长度:16Byte (128bit),一般用32位16进制数据表示;
用途:数据完整性校验、数据摘要、数据加密;

 性能:
 MD2:  速度慢-安全性高
 MD4:   速度很快-安全性下降
 MD5:   比MD4更快更安全

 使用场景:
 网络数据大文件传输-数据完整性校验
 计算机系统-用户密码加密
MD5算法: 
        对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为1632位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。     
1、首先需要对信息进行填充,使其字节长度对512求余的结果等于448。因此,信息的字节长度(Bits Length)将被扩展至(L-1*512+448,即(L-1*64+56个字节(Bytes)。填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。
2、然后在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,现在的信息字节长度=(L-1*512+448+64=L*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。     
3、MD5中有432位被称作链接变量(Chaining Variable)的整数参数,它们分别为:A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210。 它们连接起来作为IV。    
4、当设置好这四个链接变量后,HMD5开始进入算法的四轮循环运算。
5、循环的次数是信息中512位信息分组的数目,即L次循环。

三、SHA1、SHA256、SHA384、SHA512

标准制订者:SHA(Secure Hash Algorithm)美国国家标准技术研究院(NIST)制定;

算法:SHA1、SHA256、SHA512
速度:相对MD5-较慢-更安全

目前SHA1的应用较为广泛,主要应用于CA和数字证书中,另外在目前互联网中流行的BT软件中,也是使用SHA1来进行文件校验的。
SHA-1算法:
1、首先需要对信息进行填充,使其字节长度对512求余的结果等于448。因此,信息的字节长度(Bits Length)将被扩展至N*512+448,即N*64+56个字节(Bytes),N为一个正整数。填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。 
2、附加消息长度,与MD5第二步类似,不同的是以大端(最高有效字节/位存储于低地 址字节/位)方式来表示消息被填充前的长度。  
3、对消息摘要缓冲区初始化,算法使用160比特长的缓冲区来存储中间结果和最终散列值,将缓冲区表示成532比特长的寄存器A、B、CDE,每个寄存器以大端方式存储数据,初始值为(十六进制,高位字节在前)A=67452301,B=EFCDAB89,C=98BADCFE,D=10325476E=C3D2E1F0。  
4、以分组为单位对消息进行处理,每一个分组都经过压缩函数HSHA处理;HSHA有4轮处理过程,每一轮又有20步迭代;4轮处理过程的处理结构一样,所用逻辑函数不同,分别表示为f1、f2、f3、f4;每轮的输入为当前处理的消息分组和缓冲区当前的值,输出仍存放在缓冲区中。最后第四轮的输出与第一轮输入的缓冲区值V相加,相加时将V看做532比特的字,每个字与第四轮输出的对应的字按模232相加,相加结果为HMD5的输出。
5、消息的所有分组均被处理完后,最后一个HSHA的输出即为产生的160位消息摘要。

四、RIPEMD、PANAMA、TIGER、ADLER32 等

    RIPEMD是Hans Dobbertin等3人在对MD4,MD5缺陷分析基础上,于1996年提出来的,有4个标准128160256320,其对应输出长度分别为16字节、20字节、32字节和40字节。
TIGER由Ross在1995年提出。Tiger号称是最快的Hash算法,专门为64位机器做了优化。

你可能感兴趣的:(密码安全)