数据摘要算法具有不可逆性, 其主要功能有数据签名, 数据完整性校验等. 下面介绍常见的数据摘要算法:
一、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位分组来处理输入的信息,且每一分组又被划分为
16个
32位子分组,经过了一系列的处理后,算法的输出由四个
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中有
4个
32位被称作链接变量(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比特长的缓冲区来存储中间结果和最终散列值,将缓冲区表示成
5个
32比特长的寄存器A、B、
C、
D、
E,每个寄存器以大端方式存储数据,初始值为(十六进制,高位字节在前)A=
67452301,B=EFCDAB89,
C=
98BADCFE,
D=
10325476,
E=C3D2E1F0。
4、以分组为单位对消息进行处理,每一个分组都经过压缩函数HSHA处理;HSHA有
4轮处理过程,每一轮又有
20步迭代;
4轮处理过程的处理结构一样,所用逻辑函数不同,分别表示为f1、f2、f3、f4;每轮的输入为当前处理的消息分组和缓冲区当前的值,输出仍存放在缓冲区中。最后第四轮的输出与第一轮输入的缓冲区值V相加,相加时将V看做
5个
32比特的字,每个字与第四轮输出的对应的字按模
232相加,相加结果为HMD5的输出。
5、消息的所有分组均被处理完后,最后一个HSHA的输出即为产生的
160位消息摘要。
四、RIPEMD、PANAMA、TIGER、ADLER32 等
RIPEMD是Hans Dobbertin等
3人在对MD4,MD5缺陷分析基础上,于
1996年提出来的,有
4个标准
128、
160、
256和
320,其对应输出长度分别为
16字节、
20字节、
32字节和
40字节。
TIGER由Ross在
1995年提出。Tiger号称是最快的
Hash算法,专门为
64位机器做了优化。
转载请注明原文地址: https://ju.6miu.com/read-13731.html