原創不易,轉載請註明出處。
目錄
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輪迭代(十六進制表示):
a | b | c | d | e | f | g | h | ||
1 | 470994ad30873f88 | cbbb9d5dc1059ed8 | 629a292a367cd507 | 9159015a3070dd17 | bd03f724be6075f9 | 67332667ffc00b31 | 8eb44a8768581511 | db0c2e0d64f98fa7 | |
2 | 2e91230306a12ae0 | 470994ad30873f88 | cbbb9d5dc1059ed8 | 629a292a367cd507 | 5e1b4e1695372b9e | bd03f724be6075f9 | 67332667ffc00b31 | 8eb44a8768581511 | |
3 | eebe5d379be707ad | 2e91230306a12ae0 | 470994ad30873f88 | cbbb9d5dc1059ed8 | 54074a65aef34336 | 5e1b4e1695372b9e | bd03f724be6075f9 | 67332667ffc00b31 | |
4 | e308483153e15ad6 | eebe5d379be707ad | 2e91230306a12ae0 | 470994ad30873f88 | 086c5b2d36a89178 | 54074a65aef34336 | 5e1b4e1695372b9e | bd03f724be6075f9 | |
5 | 3a7a023c593d8479 | e308483153e15ad6 | eebe5d379be707ad | 2e91230306a12ae0 | 8aa1144850633794 | 086c5b2d36a89178 | 54074a65aef34336 | 5e1b4e1695372b9e | |
6 | 333199a85f92b052 | 3a7a023c593d8479 | e308483153e15ad6 | eebe5d379be707ad | 7a6316f0ef047ce7 | 8aa1144850633794 | 086c5b2d36a89178 | 54074a65aef34336 | |
7 | 76f0741213dd2ef6 | 333199a85f92b052 | 3a7a023c593d8479 | e308483153e15ad6 | 74063cba385f0675 | 7a6316f0ef047ce7 | 8aa1144850633794 | 086c5b2d36a89178 | |
8 | 02f2a04d3aab1629 | 76f0741213dd2ef6 | 333199a85f92b052 | 3a7a023c593d8479 | 1688b9bf14980fc0 | 74063cba385f0675 | 7a6316f0ef047ce7 | 8aa1144850633794 | |
9 | 73e5b2a1704a0349 | 02f2a04d3aab1629 | 76f0741213dd2ef6 | 333199a85f92b052 | fd00139f705907d0 | 1688b9bf14980fc0 | 74063cba385f0675 | 7a6316f0ef047ce7 | |
10 | bf3f67ba12882648 | 73e5b2a1704a0349 | 02f2a04d3aab1629 | 76f0741213dd2ef6 | 652e311d4f0a4257 | fd00139f705907d0 | 1688b9bf14980fc0 | 74063cba385f0675 | |
11 | 33254508bb2ea48d | bf3f67ba12882648 | 73e5b2a1704a0349 | 02f2a04d3aab1629 | 9e18991c4f39f0ba | 652e311d4f0a4257 | fd00139f705907d0 | 1688b9bf14980fc0 | |
12 | c1fdb2a0205ea0e5 | 33254508bb2ea48d | bf3f67ba12882648 | 73e5b2a1704a0349 | 04732e8bc4044582 | 9e18991c4f39f0ba | 652e311d4f0a4257 | fd00139f705907d0 | |
13 | 185f9ff038a50f39 | c1fdb2a0205ea0e5 | 33254508bb2ea48d | bf3f67ba12882648 | 8b4acfc4d2b8afe6 | 04732e8bc4044582 | 9e18991c4f39f0ba | 652e311d4f0a4257 | |
14 | e5f06744c0d7563a | 185f9ff038a50f39 | c1fdb2a0205ea0e5 | 33254508bb2ea48d | 2fa93d1ce9523015 | 8b4acfc4d2b8afe6 | 04732e8bc4044582 | 9e18991c4f39f0ba | |
15 | 7e32dc0e9f414783 | e5f06744c0d7563a | 185f9ff038a50f39 | c1fdb2a0205ea0e5 | 3a9950aaa5e75884 | 2fa93d1ce9523015 | 8b4acfc4d2b8afe6 | 04732e8bc4044582 | |
16 | 1eab6159ae87ef6d | 7e32dc0e9f414783 | e5f06744c0d7563a | 185f9ff038a50f39 | 153b895cfbc436c5 | 3a9950aaa5e75884 | 2fa93d1ce9523015 | 8b4acfc4d2b8afe6 | |
17 | 33ef2cebbf1739aa | 1eab6159ae87ef6d | 7e32dc0e9f414783 | e5f06744c0d7563a | 9d1a64baf1d366aa | 153b895cfbc436c5 | 3a9950aaa5e75884 | 2fa93d1ce9523015 | |
18 | 7df1b65f1b87d6ca | 33ef2cebbf1739aa | 1eab6159ae87ef6d | 7e32dc0e9f414783 | 5b6e369d36e8e181 | 9d1a64baf1d366aa | 153b895cfbc436c5 | 3a9950aaa5e75884 | |
19 | 63a24014a34bb0f6 | 7df1b65f1b87d6ca | 33ef2cebbf1739aa | 1eab6159ae87ef6d | e13e610eae680d85 | 5b6e369d36e8e181 | 9d1a64baf1d366aa | 153b895cfbc436c5 | |
20 | f1aabd313309509b | 63a24014a34bb0f6 | 7df1b65f1b87d6ca | 33ef2cebbf1739aa | 674385f0d87db94f | e13e610eae680d85 | 5b6e369d36e8e181 | 9d1a64baf1d366aa | |
21 | 9ba737ae88a72c64 | f1aabd313309509b | 63a24014a34bb0f6 | 7df1b65f1b87d6ca | 3fc2614c43906c0f | 674385f0d87db94f | e13e610eae680d85 | 5b6e369d36e8e181 | |
22 | 042c2dc9a5bf558a | 9ba737ae88a72c64 | f1aabd313309509b | 63a24014a34bb0f6 | 19316bebc88e01f2 | 3fc2614c43906c0f | 674385f0d87db94f | e13e610eae680d85 | |
23 | 7799c75acc748c0f | 042c2dc9a5bf558a | 9ba737ae88a72c64 | f1aabd313309509b | a7bbd65bf64f58c8 | 19316bebc88e01f2 | 3fc2614c43906c0f | 674385f0d87db94f | |
24 | ccf99a80f92bf002 | 7799c75acc748c0f | 042c2dc9a5bf558a | 9ba737ae88a72c64 | e52a24fae4e8fc9b | a7bbd65bf64f58c8 | 19316bebc88e01f2 | 3fc2614c43906c0f | |
25 | ae993474363efe68 | ccf99a80f92bf002 | 7799c75acc748c0f | 042c2dc9a5bf558a | 587f308d58681928 | e52a24fae4e8fc9b | a7bbd65bf64f58c8 | 19316bebc88e01f2 | |
26 | 335063d1a2aec92f | ae993474363efe68 | ccf99a80f92bf002 | 7799c75acc748c0f | c2d6d65e38c6ea79 | 587f308d58681928 | e52a24fae4e8fc9b | a7bbd65bf64f58c8 | |
27 | 53a78b0cca01ba37 | 335063d1a2aec92f | ae993474363efe68 | ccf99a80f92bf002 | 3b65a26c3c92c8f3 | c2d6d65e38c6ea79 | 587f308d58681928 | e52a24fae4e8fc9b | |
28 | ab7ffa529f622930 | 53a78b0cca01ba37 | 335063d1a2aec92f | ae993474363efe68 | b9d8a2f2762901ea | 3b65a26c3c92c8f3 | c2d6d65e38c6ea79 | 587f308d58681928 | |
29 | e428bb43afe3d63e | ab7ffa529f622930 | 53a78b0cca01ba37 | 335063d1a2aec92f | 6a8527525f898726 | b9d8a2f2762901ea | 3b65a26c3c92c8f3 | c2d6d65e38c6ea79 | |
30 | bbed541a5128088c | e428bb43afe3d63e | ab7ffa529f622930 | 53a78b0cca01ba37 | 7973aadbde294be9 | 6a8527525f898726 | b9d8a2f2762901ea | 3b65a26c3c92c8f3 | |
31 | 4c5c38df7ec8baf4 | bbed541a5128088c | e428bb43afe3d63e | ab7ffa529f622930 | 422ceea0200e9ee4 | 7973aadbde294be9 | 6a8527525f898726 | b9d8a2f2762901ea | |
32 | 4ba456ec244033ed | 4c5c38df7ec8baf4 | bbed541a5128088c | e428bb43afe3d63e | 7cf40857056d86b0 | 422ceea0200e9ee4 | 7973aadbde294be9 | 6a8527525f898726 | |
33 | aa4a6ab2ac5f5dd8 | 4ba456ec244033ed | 4c5c38df7ec8baf4 | bbed541a5128088c | ad2b1ecfb5bfc556 | 7cf40857056d86b0 | 422ceea0200e9ee4 | 7973aadbde294be9 | |
34 | 9cb941f2ced774b3 | aa4a6ab2ac5f5dd8 | 4ba456ec244033ed | 4c5c38df7ec8baf4 | 029f66c7b4569bf0 | ad2b1ecfb5bfc556 | 7cf40857056d86b0 | 422ceea0200e9ee4 | |
35 | 39265f358594de27 | 9cb941f2ced774b3 | aa4a6ab2ac5f5dd8 | 4ba456ec244033ed | 3f7b1c260c82e54f | 029f66c7b4569bf0 | ad2b1ecfb5bfc556 | 7cf40857056d86b0 | |
36 | 09cca487d39b02a1 | 39265f358594de27 | 9cb941f2ced774b3 | aa4a6ab2ac5f5dd8 | 4a22b37b58a5b1b0 | 3f7b1c260c82e54f | 029f66c7b4569bf0 | ad2b1ecfb5bfc556 | |
37 | d48d97ce438cf4f0 | 09cca487d39b02a1 | 39265f358594de27 | 9cb941f2ced774b3 | a239e00b8baa0410 | 4a22b37b58a5b1b0 | 3f7b1c260c82e54f | 029f66c7b4569bf0 | |
38 | d6f41e25a8b634d6 | d48d97ce438cf4f0 | 09cca487d39b02a1 | 39265f358594de27 | 25755cb8179dd0b0 | a239e00b8baa0410 | 4a22b37b58a5b1b0 | 3f7b1c260c82e54f | |
39 | 54078334358573b4 | d6f41e25a8b634d6 | d48d97ce438cf4f0 | 09cca487d39b02a1 | 0e419fb0802b0efc | 25755cb8179dd0b0 | a239e00b8baa0410 | 4a22b37b58a5b1b0 | |
40 | db24f9a03f4fff6b | 54078334358573b4 | d6f41e25a8b634d6 | d48d97ce438cf4f0 | d30e99b4b394b090 | 0e419fb0802b0efc | 25755cb8179dd0b0 | a239e00b8baa0410 | |
41 | 3604c53a845efc37 | db24f9a03f4fff6b | 54078334358573b4 | d6f41e25a8b634d6 | 791b2b4af7338b99 | d30e99b4b394b090 | 0e419fb0802b0efc | 25755cb8179dd0b0 | |
42 | f41b1c0eee89bdc6 | 3604c53a845efc37 | db24f9a03f4fff6b | 54078334358573b4 | e319b77d9e4e87f9 | 791b2b4af7338b99 | d30e99b4b394b090 | 0e419fb0802b0efc | |
43 | 36644ae374632e3a | f41b1c0eee89bdc6 | 3604c53a845efc37 | db24f9a03f4fff6b | 458250878a3972b2 | e319b77d9e4e87f9 | 791b2b4af7338b99 | d30e99b4b394b090 | |
44 | 88806f6ae9fcd65b | 36644ae374632e3a | f41b1c0eee89bdc6 | 3604c53a845efc37 | cfde2e6ea54fa576 | 458250878a3972b2 | e319b77d9e4e87f9 | 791b2b4af7338b99 | |
45 | 51dcaa36995c301d | 88806f6ae9fcd65b | 36644ae374632e3a | f41b1c0eee89bdc6 | e37f778353998050 | cfde2e6ea54fa576 | 458250878a3972b2 | e319b77d9e4e87f9 | |
46 | ef5e3885a2f238df | 51dcaa36995c301d | 88806f6ae9fcd65b | 36644ae374632e3a | 740e347f24e18fda | e37f778353998050 | cfde2e6ea54fa576 | 458250878a3972b2 | |
47 | eb3753f4283f4818 | ef5e3885a2f238df | 51dcaa36995c301d | 88806f6ae9fcd65b | 0ae48cf840bb8be9 | 740e347f24e18fda | e37f778353998050 | cfde2e6ea54fa576 | |
48 | a6998d63a5d09e04 | eb3753f4283f4818 | ef5e3885a2f238df | 51dcaa36995c301d | e21095012ee0b72a | 0ae48cf840bb8be9 | 740e347f24e18fda | e37f778353998050 | |
49 | d3698fb64df175b0 | a6998d63a5d09e04 | eb3753f4283f4818 | ef5e3885a2f238df | c2f0b90ffce80739 | e21095012ee0b72a | 0ae48cf840bb8be9 | 740e347f24e18fda | |
50 | 317a3b295b991914 | d3698fb64df175b0 | a6998d63a5d09e04 | eb3753f4283f4818 | 1cadff2e6cb5aa4d | c2f0b90ffce80739 | e21095012ee0b72a | 0ae48cf840bb8be9 | |
51 | 0941da08148ba463 | 317a3b295b991914 | d3698fb64df175b0 | a6998d63a5d09e04 | 833eb9a4bb5a073e | 1cadff2e6cb5aa4d | c2f0b90ffce80739 | e21095012ee0b72a | |
52 | 494ac238d68c3d0b | 0941da08148ba463 | 317a3b295b991914 | d3698fb64df175b0 | 80c8fc138e645028 | 833eb9a4bb5a073e | 1cadff2e6cb5aa4d | c2f0b90ffce80739 | |
53 | c87e9168db9e97de | 494ac238d68c3d0b | 0941da08148ba463 | 317a3b295b991914 | 65cf7f6a829aca04 | 80c8fc138e645028 | 833eb9a4bb5a073e | 1cadff2e6cb5aa4d | |
54 | edb4448879391dbb | c87e9168db9e97de | 494ac238d68c3d0b | 0941da08148ba463 | 7729c85475dd318f | 65cf7f6a829aca04 | 80c8fc138e645028 | 833eb9a4bb5a073e | |
55 | 073775c2456dc7db | edb4448879391dbb | c87e9168db9e97de | 494ac238d68c3d0b | a9cca0b6266b1d77 | 7729c85475dd318f | 65cf7f6a829aca04 | 80c8fc138e645028 | |
56 | 54de8857b24afaf7 | 073775c2456dc7db | edb4448879391dbb | c87e9168db9e97de | 8de51cff2ae4b068 | a9cca0b6266b1d77 | 7729c85475dd318f | 65cf7f6a829aca04 | |
57 | 8a9cdd80f7f09c05 | 54de8857b24afaf7 | 073775c2456dc7db | edb4448879391dbb | a60ba5e9ebaeb96a | 8de51cff2ae4b068 | a9cca0b6266b1d77 | 7729c85475dd318f | |
58 | 3eeb22a7524d8d7f | 8a9cdd80f7f09c05 | 54de8857b24afaf7 | 073775c2456dc7db | e2e6830b139df58f | a60ba5e9ebaeb96a | 8de51cff2ae4b068 | a9cca0b6266b1d77 | |
59 | 0ed77c9cde8883d3 | 3eeb22a7524d8d7f | 8a9cdd80f7f09c05 | 54de8857b24afaf7 | 38413a2052387a9e | e2e6830b139df58f | a60ba5e9ebaeb96a | 8de51cff2ae4b068 | |
60 | e64e4135f9d30dbc | 0ed77c9cde8883d3 | 3eeb22a7524d8d7f | 8a9cdd80f7f09c05 | 45b640454c75c349 | 38413a2052387a9e | e2e6830b139df58f | a60ba5e9ebaeb96a | |
61 | 1ca93a293d544328 | e64e4135f9d30dbc | 0ed77c9cde8883d3 | 3eeb22a7524d8d7f | efbef83a35c0319e | 45b640454c75c349 | 38413a2052387a9e | e2e6830b139df58f | |
62 | 3dc764f89e54043a | 1ca93a293d544328 | e64e4135f9d30dbc | 0ed77c9cde8883d3 | a57784945550cf94 | efbef83a35c0319e | 45b640454c75c349 | 38413a2052387a9e | |
63 | 56fb5883f1c87a05 | 3dc764f89e54043a | 1ca93a293d544328 | e64e4135f9d30dbc | f5198a41eb80e022 | a57784945550cf94 | efbef83a35c0319e | 45b640454c75c349 | |
64 | 24a1124262a331c7 | 56fb5883f1c87a05 | 3dc764f89e54043a | 1ca93a293d544328 | 06edacae6e7b54ad | f5198a41eb80e022 | a57784945550cf94 | efbef83a35c0319e | |
65 | eb85d19201c89694 | 24a1124262a331c7 | 56fb5883f1c87a05 | 3dc764f89e54043a | 9ced24983eec8723 | 06edacae6e7b54ad | f5198a41eb80e022 | a57784945550cf94 | |
66 | cc981ab3a59c1db4 | eb85d19201c89694 | 24a1124262a331c7 | 56fb5883f1c87a05 | eac5516336bc8882 | 9ced24983eec8723 | 06edacae6e7b54ad | f5198a41eb80e022 | |
67 | ceef5d997e148b44 | cc981ab3a59c1db4 | eb85d19201c89694 | 24a1124262a331c7 | 617bbf70bb165212 | eac5516336bc8882 | 9ced24983eec8723 | 06edacae6e7b54ad | |
68 | 689edf608a8e3f14 | ceef5d997e148b44 | cc981ab3a59c1db4 | eb85d19201c89694 | 3280d88472c100fd | 617bbf70bb165212 | eac5516336bc8882 | 9ced24983eec8723 | |
69 | 1e6e0255ab88079f | 689edf608a8e3f14 | ceef5d997e148b44 | cc981ab3a59c1db4 | f2001138439902b1 | 3280d88472c100fd | 617bbf70bb165212 | eac5516336bc8882 | |
70 | 8c5d3b7fdad66e70 | 1e6e0255ab88079f | 689edf608a8e3f14 | ceef5d997e148b44 | 90d18ec8b69f0345 | f2001138439902b1 | 3280d88472c100fd | 617bbf70bb165212 | |
71 | 32e5ed8655871e9b | 8c5d3b7fdad66e70 | 1e6e0255ab88079f | 689edf608a8e3f14 | 51105f6241313777 | 90d18ec8b69f0345 | f2001138439902b1 | 3280d88472c100fd | |
72 | bcd5061679be7336 | 32e5ed8655871e9b | 8c5d3b7fdad66e70 | 1e6e0255ab88079f | 454b99f654443ad0 | 51105f6241313777 | 90d18ec8b69f0345 | f2001138439902b1 | |
73 | e7d913b6678e78ef | bcd5061679be7336 | 32e5ed8655871e9b | 8c5d3b7fdad66e70 | 1ff613b5aa63776e | 454b99f654443ad0 | 51105f6241313777 | 90d18ec8b69f0345 | |
74 | e6b8cb8dfa3475ab | e7d913b6678e78ef | bcd5061679be7336 | 32e5ed8655871e9b | 2e75f34303d39bb0 | 1ff613b5aa63776e | 454b99f654443ad0 | 51105f6241313777 | |
75 | fdd4a30e168c4ae5 | e6b8cb8dfa3475ab | e7d913b6678e78ef | bcd5061679be7336 | 83a35dbe2a64fc26 | 2e75f34303d39bb0 | 1ff613b5aa63776e | 454b99f654443ad0 | |
76 | 12aeb6268dfa3e14 | fdd4a30e168c4ae5 | e6b8cb8dfa3475ab | e7d913b6678e78ef | f660943b276786f7 | 83a35dbe2a64fc26 | 2e75f34303d39bb0 | 1ff613b5aa63776e | |
77 | 055b73814cf102b4 | 12aeb6268dfa3e14 | fdd4a30e168c4ae5 | e6b8cb8dfa3475ab | c4b149710f5d6a71 | f660943b276786f7 | 83a35dbe2a64fc26 | 2e75f34303d39bb0 | |
78 | 95d33150de6df44c | 055b73814cf102b4 | 12aeb6268dfa3e14 | fdd4a30e168c4ae5 | c7f7bff08ebf0d30 | c4b149710f5d6a71 | f660943b276786f7 | 83a35dbe2a64fc26 | |
79 | 5306143f64497b00 | 95d33150de6df44c | 055b73814cf102b4 | 12aeb6268dfa3e14 | ca06a219cc701096 | c7f7bff08ebf0d30 | c4b149710f5d6a71 | f660943b276786f7 | |
80 | ff44d7e1849dbfb3 | 5306143f64497b00 | 95d33150de6df44c | 055b73814cf102b4 | 1952e0c3a227c0f2 | ca06a219cc701096 | c7f7bff08ebf0d30 | c4b149710f5d6a71 |
雜湊值h0~h5
h0:0xcb00753f45a35e8b
h1:0xb5a03d699ac65007
h2:0x272c32ab0eded163
h3:0x1a8b605a43ff5bed
h4:0x8086072ba1e7cc23
h5:0x58baeca134c825a7
參考文獻: