SHA-384摘要算法(带示例)

原创不易,转载请注明出处。

目录

1.算法简介

2.符号

3.加密算法流程

3.1 概述

3.2 填充

3.3 加密处理

附录A 运算示例

附录B 下载链接


1.算法简介

SHA英文全称Secure Hash Algorithm,即安全散列算法。散列算法又称杂凑算法或哈希算法,能将一定长度的消息计算出固定长度的字符串(又称消息摘要)。SHA包含5个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384和SHA-512,后四者并称为SHA-2。

SHA-384最大计算明文长度为2^128bit,属于分组算法,分组长度为1024bit,产生的信息摘要长度为384bit。SHA-384算法属于密码杂凑算法,原则上不能通过密文推出明文。

本文将通过实例,详细介绍SHA-256加密算法的加密流程。

2.符号

下列符号适用于本文本。

h0~h7:8个64bit双字,初始哈希值,也存放每组计算的当前哈希值

abcdefgh:8个64bit双字,存放中间变量

 m:消息

 m':填充后的消息

mod:模运算

s0,s1:字节扩展时中间变量

S0,S1,ch,maj,temp1,temp2:循环迭代时中间变量

w[i]:第i个扩展双字

∧:64bit与运算

∨:64bit或运算

:异或运算

>>>k:循环右移k比特运算

>>k:右移k比特运算

←:左向赋值运算符

~:64bit双字按位取反

3.加密算法流程

3.1 概述

对长度为l (l<2^128bit )比特的消息 ,SHA-384杂凑算法经过填充和迭代压缩,生成杂凑值,杂凑值长度为384比特。

3.2 填充

假设消息m 的长度为 l比特。首先将比特“1”添加到消息的末尾,再添加 k个“0”,k 是满足l+1+k=896mod1024 的最小的非负整数。然后再添加一个128位比特串,该比特串是长度l 的二进制表示。填充后的消息 m'的比特长度为1024的倍数。

例如:对消息01100001 01100010 01100011,其长度 =24,经填充得到比特串:

                  

事实上,在编写程序时,应该先进行分组,对满足1024bit的分组先进行计算。当分到最后一组不足1024bit时,再进行填充。

3.3 加密处理

将填充后的消息m' 按1024比特进行分组:m'=B0B1……Bn-1,其中n=(l+k+129)/1024 。

3.3.1 常量及初始值

初始哈希值:

h0=0xcbbb9d5dc1059ed8,

h1=0x629a292a367cd507,

h2=0x9159015a3070dd17,

h3=0x152fecd8f70e5939,

h4=0x67332667ffc00b31,

h5=0x8eb44a8768581511,

h6=0xdb0c2e0d64f98fa7,

h7=0x47b5481dbefa4fa4

初始常量矩阵(十六进制):

k[0..79]=

0x428a2f98d728ae22,  0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc,        0x3956c25bf348b538,

0x59f111f1b605d019,   0x923f82a4af194f9b, 0xab1c5ed5da6d8118, 0xd807aa98a3030242,        0x12835b0145706fbe,

0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2, 0x72be5d74f27b896f, 0x80deb1fe3b1696b1,        0x9bdc06a725c71235,

0xc19bf174cf692694,   0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5,        0x240ca1cc77ac9c65,

0x2de92c6f592b0275,  0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5,        0x983e5152ee66dfab,

0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4, 0xc6e00bf33da88fc2,        0xd5a79147930aa725,

0x06ca6351e003826f,  0x142929670a0e6e70, 0x27b70a8546d22ffc, 0x2e1b21385c26c926,        0x4d2c6dfc5ac42aed,

0x53380d139d95b3df,  0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6,        0x92722c851482353b,

0xa2bfe8a14cf10364,    0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30,        0xd192e819d6ef5218,

0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8, 0x19a4c116b8d2d0c8,        0x1e376c085141ab53,

0x2748774cdf8eeb99,  0x34b0bcb5e19b48a8, 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb,        0x5b9cca4f7763e373,

0x682e6ff3d6b2b8a3,   0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72,        0x8cc702081a6439ec,

0x90befffa23631e28,    0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b,        0xca273eceea26619c,

0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178, 0x06f067aa72176fba,        0x0a637dc5a2c898a6,

0x113f9804bef90dae,   0x1b710b35131c471b, 0x28db77f523047d84, 0x32caab7b40c72493,        0x3c9ebe0a15c9bebc,

0x431d67c49c100d4c, 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec,        0x6c44198c4a475817

3.3.2 加密流程

每组数据按照如下流程进行加密操作:

1)分组数据按照64bit双字存放在w[0]~w[15]中,然后按照如下规则扩展成80个双字。注意 s0, s1 最后是右移, 不是循环右移。

FOR i from 16 to 79

    s0= (w[i-15] ) >>> 1)⊕(w[i-15] >>> 8)⊕(w[i-15] >> 7)

    s1= (w[i-2] >>> 19)⊕(w[i-2] >>> 61)⊕(w[i-2] >> 6)

    w[i]= w[i-16] + s0 + w[i-7] + s1

ENDFOR

2)赋值初始哈希值

a= h0

b= h1

c= h2

d= h3

e= h4

f= h5

g= h6

h= h7

3)迭代计算80次

FOR i from 0 to 79

     S1= (e >>> 14) ⊕ (e >>> 18) ⊕ (e >>> 41)

     ch= (e∧ f) ⊕ ((~ e) ∧ g)

     temp1= h + S1 + ch + k[i] + w[i]

     S0= (a >>> 28) ⊕ (a >>> 34) ⊕ (a >>> 39)

     maj= (a∧b) ⊕ (a∧c)⊕(b∧c)

    temp2= S0 + maj

 

    h= g

    g= f

    f= e

    e= d + temp1

    d= c

    c= b

    b= a

    a= temp1 + temp2

ENDFOR

4)获取当前哈希值

h0= h0 + a

h1= h1 + b

h2= h2 + c

h3= h3 + d

h4= h4 + e

h5= h5 + f

h6= h6 + g

h7= h7 + h

注意前一组得到的哈希值h0~h7作为下一分组的初始值,最终得到的h0~h5就是384bit杂凑值

附录A 运算示例

原始输入消息:

abc

填充后消息:

0x61      0x62      0x63      0x80      0x00      0x00      0x00      0x00

0x00      0x00      0x00      0x00      0x00      0x00      0x00      0x00

0x00      0x00      0x00      0x00      0x00      0x00      0x00      0x00

0x00      0x00      0x00      0x00      0x00      0x00      0x00      0x00

0x00      0x00      0x00      0x00      0x00      0x00      0x00      0x00

0x00      0x00      0x00      0x00      0x00      0x00      0x00      0x00

0x00      0x00      0x00      0x00      0x00      0x00      0x00      0x00

0x00      0x00      0x00      0x00      0x00      0x00      0x00      0x00

0x00      0x00      0x00      0x00      0x00      0x00      0x00      0x00

0x00      0x00      0x00      0x00      0x00      0x00      0x00      0x00

0x00      0x00      0x00      0x00      0x00      0x00      0x00      0x00

0x00      0x00      0x00      0x00      0x00      0x00      0x00      0x00

0x00      0x00      0x00      0x00      0x00      0x00      0x00      0x00

0x00      0x00      0x00      0x00      0x00      0x00      0x00      0x00

0x00      0x00      0x00      0x00      0x00      0x00      0x00      0x00

0x00      0x00      0x00      0x00      0x00      0x00      0x00      0x18

80个扩展双字(十六进制)

w[0]~w[3]:

6162638000000000

0000000000000000

0000000000000000

0000000000000000

w[4]~w[7]:

0000000000000000

0000000000000000

0000000000000000

0000000000000000

w[8]~w[11]:

0000000000000000

0000000000000000

0000000000000000

0000000000000000

w[12]~w[15]:

0000000000000000

0000000000000000

0000000000000000

0000000000000018

w[16]~w[19]:

6162638000000000

00030000000000c0

0a9699a24c700003

00000c0060000603

w[20]~w[23]:

549ef62639858996

00c0003300003c00

1497007a8a0e9dbc

62e56500cc0780f0

w[24]~w[27]:

7760dd475a538797

f1554b711c1c0003

ca2993a4345d9ff2

5e0e66b5c783dd32

w[28]~w[31]:

e25a625d00494b62

9f44486fb1e4fbd2

b31b8c2b06085f2f

0e987660934142f6

w[32]~w[35]:

a4af2cfd09fbb924

ad289e2e0bd53186

3c74563aa2f9673e

6ccdcd14cc14b53f

w[36]~w[39]:

c3f925b337f22bde

5bcc77a75ad95b54

3ec2257adca09a52

28246960001fc5eb

w[40]~w[43]:

04e33a75ce2be88a

7d5314b3c359e0e7

aef7a285ff251266

0b8472581deea04f

w[44]~w[47]:

b174e26eddc7b033

5d63bae58ddd88de

4c044007b744ccbb

e6a9aa4d74dc7d43

w[48]~w[51]:

ebeaf1237248019c

361e80b2d00f3193

2e9839125df3b175

3319629293ad5363

w[52]~w[55]:

9cbc5d89ac1b89d5

275e23ffeeca50b7

3b80d680bf69ef58

0d0696933945a125

w[56]~w[59]:

7533eabcb786ff00

b89826cee6fbf0e5

249b4fbcad623e9f

4aea9df2b02d6f1e

w[60]~w[63]:

2cc57475a55e8d8f

b2574ae938d8be89

c1b35a57b16d6aea

cc4918b5949206bb

w[64]~w[67]:

5099c3add79f90ec

5ea81d78e7660bf1

ebee6267405ac2a9

b01f21926108a4ab

w[68]~w[71]:

786433dd2fe65556

c54a6eaa24a0552c

b3c8f1530bdbaa9e

bb8abfe56f469338

w[72]~w[75]:

f63d4265cc1c5a78

be8355ea73129afb

49e2db8ebdcfbeb5

82269d4a883a3d99

w[76]~w[79]:

fdf53df3011f362b

464af5671d71c12e

e449b68198ec611c

92aeeed1a7bcf7d2

64轮迭代(十六进制表示)

 abcdefgh 
1470994ad30873f88cbbb9d5dc1059ed8629a292a367cd5079159015a3070dd17bd03f724be6075f967332667ffc00b318eb44a8768581511db0c2e0d64f98fa7
22e91230306a12ae0470994ad30873f88cbbb9d5dc1059ed8629a292a367cd5075e1b4e1695372b9ebd03f724be6075f967332667ffc00b318eb44a8768581511
3eebe5d379be707ad2e91230306a12ae0470994ad30873f88cbbb9d5dc1059ed854074a65aef343365e1b4e1695372b9ebd03f724be6075f967332667ffc00b31
4e308483153e15ad6eebe5d379be707ad2e91230306a12ae0470994ad30873f88086c5b2d36a8917854074a65aef343365e1b4e1695372b9ebd03f724be6075f9
53a7a023c593d8479e308483153e15ad6eebe5d379be707ad2e91230306a12ae08aa1144850633794086c5b2d36a8917854074a65aef343365e1b4e1695372b9e
6333199a85f92b0523a7a023c593d8479e308483153e15ad6eebe5d379be707ad7a6316f0ef047ce78aa1144850633794086c5b2d36a8917854074a65aef34336
776f0741213dd2ef6333199a85f92b0523a7a023c593d8479e308483153e15ad674063cba385f06757a6316f0ef047ce78aa1144850633794086c5b2d36a89178
802f2a04d3aab162976f0741213dd2ef6333199a85f92b0523a7a023c593d84791688b9bf14980fc074063cba385f06757a6316f0ef047ce78aa1144850633794
973e5b2a1704a034902f2a04d3aab162976f0741213dd2ef6333199a85f92b052fd00139f705907d01688b9bf14980fc074063cba385f06757a6316f0ef047ce7
10bf3f67ba1288264873e5b2a1704a034902f2a04d3aab162976f0741213dd2ef6652e311d4f0a4257fd00139f705907d01688b9bf14980fc074063cba385f0675
1133254508bb2ea48dbf3f67ba1288264873e5b2a1704a034902f2a04d3aab16299e18991c4f39f0ba652e311d4f0a4257fd00139f705907d01688b9bf14980fc0
12c1fdb2a0205ea0e533254508bb2ea48dbf3f67ba1288264873e5b2a1704a034904732e8bc40445829e18991c4f39f0ba652e311d4f0a4257fd00139f705907d0
13185f9ff038a50f39c1fdb2a0205ea0e533254508bb2ea48dbf3f67ba128826488b4acfc4d2b8afe604732e8bc40445829e18991c4f39f0ba652e311d4f0a4257
14e5f06744c0d7563a185f9ff038a50f39c1fdb2a0205ea0e533254508bb2ea48d2fa93d1ce95230158b4acfc4d2b8afe604732e8bc40445829e18991c4f39f0ba
157e32dc0e9f414783e5f06744c0d7563a185f9ff038a50f39c1fdb2a0205ea0e53a9950aaa5e758842fa93d1ce95230158b4acfc4d2b8afe604732e8bc4044582
161eab6159ae87ef6d7e32dc0e9f414783e5f06744c0d7563a185f9ff038a50f39153b895cfbc436c53a9950aaa5e758842fa93d1ce95230158b4acfc4d2b8afe6
1733ef2cebbf1739aa1eab6159ae87ef6d7e32dc0e9f414783e5f06744c0d7563a9d1a64baf1d366aa153b895cfbc436c53a9950aaa5e758842fa93d1ce9523015
187df1b65f1b87d6ca33ef2cebbf1739aa1eab6159ae87ef6d7e32dc0e9f4147835b6e369d36e8e1819d1a64baf1d366aa153b895cfbc436c53a9950aaa5e75884
1963a24014a34bb0f67df1b65f1b87d6ca33ef2cebbf1739aa1eab6159ae87ef6de13e610eae680d855b6e369d36e8e1819d1a64baf1d366aa153b895cfbc436c5
20f1aabd313309509b63a24014a34bb0f67df1b65f1b87d6ca33ef2cebbf1739aa674385f0d87db94fe13e610eae680d855b6e369d36e8e1819d1a64baf1d366aa
219ba737ae88a72c64f1aabd313309509b63a24014a34bb0f67df1b65f1b87d6ca3fc2614c43906c0f674385f0d87db94fe13e610eae680d855b6e369d36e8e181
22042c2dc9a5bf558a9ba737ae88a72c64f1aabd313309509b63a24014a34bb0f619316bebc88e01f23fc2614c43906c0f674385f0d87db94fe13e610eae680d85
237799c75acc748c0f042c2dc9a5bf558a9ba737ae88a72c64f1aabd313309509ba7bbd65bf64f58c819316bebc88e01f23fc2614c43906c0f674385f0d87db94f
24ccf99a80f92bf0027799c75acc748c0f042c2dc9a5bf558a9ba737ae88a72c64e52a24fae4e8fc9ba7bbd65bf64f58c819316bebc88e01f23fc2614c43906c0f
25ae993474363efe68ccf99a80f92bf0027799c75acc748c0f042c2dc9a5bf558a587f308d58681928e52a24fae4e8fc9ba7bbd65bf64f58c819316bebc88e01f2
26335063d1a2aec92fae993474363efe68ccf99a80f92bf0027799c75acc748c0fc2d6d65e38c6ea79587f308d58681928e52a24fae4e8fc9ba7bbd65bf64f58c8
2753a78b0cca01ba37335063d1a2aec92fae993474363efe68ccf99a80f92bf0023b65a26c3c92c8f3c2d6d65e38c6ea79587f308d58681928e52a24fae4e8fc9b
28ab7ffa529f62293053a78b0cca01ba37335063d1a2aec92fae993474363efe68b9d8a2f2762901ea3b65a26c3c92c8f3c2d6d65e38c6ea79587f308d58681928
29e428bb43afe3d63eab7ffa529f62293053a78b0cca01ba37335063d1a2aec92f6a8527525f898726b9d8a2f2762901ea3b65a26c3c92c8f3c2d6d65e38c6ea79
30bbed541a5128088ce428bb43afe3d63eab7ffa529f62293053a78b0cca01ba377973aadbde294be96a8527525f898726b9d8a2f2762901ea3b65a26c3c92c8f3
314c5c38df7ec8baf4bbed541a5128088ce428bb43afe3d63eab7ffa529f622930422ceea0200e9ee47973aadbde294be96a8527525f898726b9d8a2f2762901ea
324ba456ec244033ed4c5c38df7ec8baf4bbed541a5128088ce428bb43afe3d63e7cf40857056d86b0422ceea0200e9ee47973aadbde294be96a8527525f898726
33aa4a6ab2ac5f5dd84ba456ec244033ed4c5c38df7ec8baf4bbed541a5128088cad2b1ecfb5bfc5567cf40857056d86b0422ceea0200e9ee47973aadbde294be9
349cb941f2ced774b3aa4a6ab2ac5f5dd84ba456ec244033ed4c5c38df7ec8baf4029f66c7b4569bf0ad2b1ecfb5bfc5567cf40857056d86b0422ceea0200e9ee4
3539265f358594de279cb941f2ced774b3aa4a6ab2ac5f5dd84ba456ec244033ed3f7b1c260c82e54f029f66c7b4569bf0ad2b1ecfb5bfc5567cf40857056d86b0
3609cca487d39b02a139265f358594de279cb941f2ced774b3aa4a6ab2ac5f5dd84a22b37b58a5b1b03f7b1c260c82e54f029f66c7b4569bf0ad2b1ecfb5bfc556
37d48d97ce438cf4f009cca487d39b02a139265f358594de279cb941f2ced774b3a239e00b8baa04104a22b37b58a5b1b03f7b1c260c82e54f029f66c7b4569bf0
38d6f41e25a8b634d6d48d97ce438cf4f009cca487d39b02a139265f358594de2725755cb8179dd0b0a239e00b8baa04104a22b37b58a5b1b03f7b1c260c82e54f
3954078334358573b4d6f41e25a8b634d6d48d97ce438cf4f009cca487d39b02a10e419fb0802b0efc25755cb8179dd0b0a239e00b8baa04104a22b37b58a5b1b0
40db24f9a03f4fff6b54078334358573b4d6f41e25a8b634d6d48d97ce438cf4f0d30e99b4b394b0900e419fb0802b0efc25755cb8179dd0b0a239e00b8baa0410
413604c53a845efc37db24f9a03f4fff6b54078334358573b4d6f41e25a8b634d6791b2b4af7338b99d30e99b4b394b0900e419fb0802b0efc25755cb8179dd0b0
42f41b1c0eee89bdc63604c53a845efc37db24f9a03f4fff6b54078334358573b4e319b77d9e4e87f9791b2b4af7338b99d30e99b4b394b0900e419fb0802b0efc
4336644ae374632e3af41b1c0eee89bdc63604c53a845efc37db24f9a03f4fff6b458250878a3972b2e319b77d9e4e87f9791b2b4af7338b99d30e99b4b394b090
4488806f6ae9fcd65b36644ae374632e3af41b1c0eee89bdc63604c53a845efc37cfde2e6ea54fa576458250878a3972b2e319b77d9e4e87f9791b2b4af7338b99
4551dcaa36995c301d88806f6ae9fcd65b36644ae374632e3af41b1c0eee89bdc6e37f778353998050cfde2e6ea54fa576458250878a3972b2e319b77d9e4e87f9
46ef5e3885a2f238df51dcaa36995c301d88806f6ae9fcd65b36644ae374632e3a740e347f24e18fdae37f778353998050cfde2e6ea54fa576458250878a3972b2
47eb3753f4283f4818ef5e3885a2f238df51dcaa36995c301d88806f6ae9fcd65b0ae48cf840bb8be9740e347f24e18fdae37f778353998050cfde2e6ea54fa576
48a6998d63a5d09e04eb3753f4283f4818ef5e3885a2f238df51dcaa36995c301de21095012ee0b72a0ae48cf840bb8be9740e347f24e18fdae37f778353998050
49d3698fb64df175b0a6998d63a5d09e04eb3753f4283f4818ef5e3885a2f238dfc2f0b90ffce80739e21095012ee0b72a0ae48cf840bb8be9740e347f24e18fda
50317a3b295b991914d3698fb64df175b0a6998d63a5d09e04eb3753f4283f48181cadff2e6cb5aa4dc2f0b90ffce80739e21095012ee0b72a0ae48cf840bb8be9
510941da08148ba463317a3b295b991914d3698fb64df175b0a6998d63a5d09e04833eb9a4bb5a073e1cadff2e6cb5aa4dc2f0b90ffce80739e21095012ee0b72a
52494ac238d68c3d0b0941da08148ba463317a3b295b991914d3698fb64df175b080c8fc138e645028833eb9a4bb5a073e1cadff2e6cb5aa4dc2f0b90ffce80739
53c87e9168db9e97de494ac238d68c3d0b0941da08148ba463317a3b295b99191465cf7f6a829aca0480c8fc138e645028833eb9a4bb5a073e1cadff2e6cb5aa4d
54edb4448879391dbbc87e9168db9e97de494ac238d68c3d0b0941da08148ba4637729c85475dd318f65cf7f6a829aca0480c8fc138e645028833eb9a4bb5a073e
55073775c2456dc7dbedb4448879391dbbc87e9168db9e97de494ac238d68c3d0ba9cca0b6266b1d777729c85475dd318f65cf7f6a829aca0480c8fc138e645028
5654de8857b24afaf7073775c2456dc7dbedb4448879391dbbc87e9168db9e97de8de51cff2ae4b068a9cca0b6266b1d777729c85475dd318f65cf7f6a829aca04
578a9cdd80f7f09c0554de8857b24afaf7073775c2456dc7dbedb4448879391dbba60ba5e9ebaeb96a8de51cff2ae4b068a9cca0b6266b1d777729c85475dd318f
583eeb22a7524d8d7f8a9cdd80f7f09c0554de8857b24afaf7073775c2456dc7dbe2e6830b139df58fa60ba5e9ebaeb96a8de51cff2ae4b068a9cca0b6266b1d77
590ed77c9cde8883d33eeb22a7524d8d7f8a9cdd80f7f09c0554de8857b24afaf738413a2052387a9ee2e6830b139df58fa60ba5e9ebaeb96a8de51cff2ae4b068
60e64e4135f9d30dbc0ed77c9cde8883d33eeb22a7524d8d7f8a9cdd80f7f09c0545b640454c75c34938413a2052387a9ee2e6830b139df58fa60ba5e9ebaeb96a
611ca93a293d544328e64e4135f9d30dbc0ed77c9cde8883d33eeb22a7524d8d7fefbef83a35c0319e45b640454c75c34938413a2052387a9ee2e6830b139df58f
623dc764f89e54043a1ca93a293d544328e64e4135f9d30dbc0ed77c9cde8883d3a57784945550cf94efbef83a35c0319e45b640454c75c34938413a2052387a9e
6356fb5883f1c87a053dc764f89e54043a1ca93a293d544328e64e4135f9d30dbcf5198a41eb80e022a57784945550cf94efbef83a35c0319e45b640454c75c349
6424a1124262a331c756fb5883f1c87a053dc764f89e54043a1ca93a293d54432806edacae6e7b54adf5198a41eb80e022a57784945550cf94efbef83a35c0319e
65eb85d19201c8969424a1124262a331c756fb5883f1c87a053dc764f89e54043a9ced24983eec872306edacae6e7b54adf5198a41eb80e022a57784945550cf94
66cc981ab3a59c1db4eb85d19201c8969424a1124262a331c756fb5883f1c87a05eac5516336bc88829ced24983eec872306edacae6e7b54adf5198a41eb80e022
67ceef5d997e148b44cc981ab3a59c1db4eb85d19201c8969424a1124262a331c7617bbf70bb165212eac5516336bc88829ced24983eec872306edacae6e7b54ad
68689edf608a8e3f14ceef5d997e148b44cc981ab3a59c1db4eb85d19201c896943280d88472c100fd617bbf70bb165212eac5516336bc88829ced24983eec8723
691e6e0255ab88079f689edf608a8e3f14ceef5d997e148b44cc981ab3a59c1db4f2001138439902b13280d88472c100fd617bbf70bb165212eac5516336bc8882
708c5d3b7fdad66e701e6e0255ab88079f689edf608a8e3f14ceef5d997e148b4490d18ec8b69f0345f2001138439902b13280d88472c100fd617bbf70bb165212
7132e5ed8655871e9b8c5d3b7fdad66e701e6e0255ab88079f689edf608a8e3f1451105f624131377790d18ec8b69f0345f2001138439902b13280d88472c100fd
72bcd5061679be733632e5ed8655871e9b8c5d3b7fdad66e701e6e0255ab88079f454b99f654443ad051105f624131377790d18ec8b69f0345f2001138439902b1
73e7d913b6678e78efbcd5061679be733632e5ed8655871e9b8c5d3b7fdad66e701ff613b5aa63776e454b99f654443ad051105f624131377790d18ec8b69f0345
74e6b8cb8dfa3475abe7d913b6678e78efbcd5061679be733632e5ed8655871e9b2e75f34303d39bb01ff613b5aa63776e454b99f654443ad051105f6241313777
75fdd4a30e168c4ae5e6b8cb8dfa3475abe7d913b6678e78efbcd5061679be733683a35dbe2a64fc262e75f34303d39bb01ff613b5aa63776e454b99f654443ad0
7612aeb6268dfa3e14fdd4a30e168c4ae5e6b8cb8dfa3475abe7d913b6678e78eff660943b276786f783a35dbe2a64fc262e75f34303d39bb01ff613b5aa63776e
77055b73814cf102b412aeb6268dfa3e14fdd4a30e168c4ae5e6b8cb8dfa3475abc4b149710f5d6a71f660943b276786f783a35dbe2a64fc262e75f34303d39bb0
7895d33150de6df44c055b73814cf102b412aeb6268dfa3e14fdd4a30e168c4ae5c7f7bff08ebf0d30c4b149710f5d6a71f660943b276786f783a35dbe2a64fc26
795306143f64497b0095d33150de6df44c055b73814cf102b412aeb6268dfa3e14ca06a219cc701096c7f7bff08ebf0d30c4b149710f5d6a71f660943b276786f7
80ff44d7e1849dbfb35306143f64497b0095d33150de6df44c055b73814cf102b41952e0c3a227c0f2ca06a219cc701096c7f7bff08ebf0d30c4b149710f5d6a71

杂凑值h0~h5

h0:0xcb00753f45a35e8b

h1:0xb5a03d699ac65007

h2:0x272c32ab0eded163

h3:0x1a8b605a43ff5bed

h4:0x8086072ba1e7cc23

h5:0x58baeca134c825a7

附录B 下载链接

https://download.csdn.net/download/u013073067/13138360

编译环境:VS2010

语言:C

参考文献:

[1]https://en.wikipedia.org/wiki/Secure_Hash_Algorithms

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fengwang0301

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值