哈希算法特征

哈希算法的特征

MD5

数据填充方式
分组长度512位(64字节),最后一个组要留64位(8字节)附加初始数据长度,小端存储。
初始化变量
有4个初始化变量
A=0x67452301
B=0xEFCDAB89
C=0x98BADCFE
D=0x10325476
分块
分组长度是512位,把它划分为16块,每块32位(4字节)。
循环计算次数
四轮64次
计算过程中用到的参数
K:有一个K表,里面一共有64个常量
F:一类函数,又有四种形式
s:移位长度,有固定的几个不同的值
结果长度
128位(16字节)

SHA1

数据填充方式
分组长度512位(64字节),最后一个组要留64位(8字节)附加初始数据长度,大端存储。
初始化变量
有5个初始化变量
A=0x67452301
B=0xEFCDAB89
C=0x98BADCFE
D=0x10325476
E=0xC3D2E1F0
分块
分组长度是512位,把它划分为16块,每块32位(4字节),然后以这16块数据为基础,通过特定的算法将其拓展到80块数据。
循环计算次数
四轮80次
计算过程中用到的参数
K:这里K值共有四个,第1至20次计算用第一个,第21至第40次计算用第二个,以此类推。
F:F函数,有四种形式。
结果长度
160位(20字节)

SHA256

数据填充方式
分组长度512位(64字节),最后一个组要留64位(8字节)附加初始数据长度,大端存储。
初始化变量
有8个初始化常量
h0 = 0x6a09e667
h1 = 0xbb67ae85
h2 = 0x3c6ef372
h3 = 0xa54ff53a
h4 = 0x510e527f
h5 = 0x9b05688c
h6 = 0x1f83d9ab
h7 = 0x5be0cd19
分块
分组长度是512位,把它划分为16块,每块32位(4字节),然后以这16块数据为基础,通过特定的算法将其拓展到64块数据。
循环计算次数
64次
计算过程中用到的参数
K:这里的K对应64个常量。
结果长度
256位(32字节)

SHA512

数据填充方式
分组长度1024位(128字节),最后一个组要留128位(16字节)附加初始数据长度,大端存储。
初始化变量
有8个64位(8字节)初始化常量
a=0x6a09e667f3bcc908
b=0xbb67ae8584caa73b
c=0x3c6ef372fe94f82b
d=0xa54ff53a5f1d36f1
e=0x510e527fade682d1
f=0x9b05688c2b3e6c1f
g=0x1f83d9abfb41bd6b
h=0x5be0cd19137e2179
分块
分组长度是1024位,把它划分为16块,每块64位(8字节),然后以这16块数据为基础,通过特定的算法将其拓展到80块数据。
循环计算次数
80次
计算过程中用到的参数
K:这里的K对应80个常量,长度64位(8字节)。
结果长度
512位(64字节)