Federal Information
Processing Standards Publication 180-1

1995年4月17日

Secure Hash Standard
(安全な要約アルゴリズムの標準)

翻訳について

これは、 National Institute of Standards and Technology (NIST) の文書 FIPS 180-1 Secure Hash Standard を独自に翻訳した物です。 この翻訳を利用する際は、 翻訳者の理解不足による誤訳の可能性が十分にあることを念頭に入れて下さい。 (誤訳を発見された場合、翻訳者まで連絡を頂ければ幸いです。)

この翻訳は "現状有姿 (AS IS)" で提供され、 明示的であるか黙示的であるかを問わずいかなる保証も行われないものとします。

1. 序説

SHA-1(Secure Hash Algorithm; 安全な要約アルゴリズム) は DSS(Digital Signature Standard; 電子署名標準)に規定される DSA(Digital Signature Algorithm; 電子署名アルゴリズム) や、連邦政府の応用ソフトウェアにおいて安全な要約アルゴリズムが 必要とされる場合に使用される。 SHA-1 は、264ビット未満のメッセージに対して メッセージ要約値と呼ばれる160ビット長のデータを出力する。 このメッセージ要約値はそれに対する署名を生成する際に使用される。 SHA-1 はまた、署名を検証する際に受信メッセージの要約値の計算にも使用される。 転送中にメッセージが変更された場合には 非常に高い確率で異なった要約値になり、 結果として署名の検証は失敗する。

SHA-1 は以下の特性を持つよう設計された: 計算によって、 あるメッセージ要約値からメッセージを求めること、 または同一のメッセージ要約値を持つ2つの異なるメッセージを発見すること は不可能であること。

2. ビット列・整数

ビット列・整数に関する以下の用語を使用する:

  1. 16進数字は {0, 1, ..., 9, A, ..., F} からなる要素である。 16進数字は4ビット列を表す。 例: 7 = 0111, A = 1010
  2. ワードは16進数字8個を表すことができる32ビット列である。 あるワードから16進数字8個に変換するためには、 それぞれの4ビット列を上で述べたように対応する16進数字に置き換える。 例:

    1010 0001 0000 0011 1111 1110 0010 0011 = A103FE23

  3. 0以上232 - 1以下の整数はワードとして表現可能である。 整数の下位4ビットはワード表現の右側に配置される。 例: 整数 291 = 28 + 25 + 21 + 20 = 256+32+2+1 は16進ワードで 00000123 と表現される。
    z が 0 ≦ z < 264 なる整数であれば、 z = 232x + y となる。 ここで 0 ≦ x < 232 かつ 0 ≦ y < 232 である。 xy は ワード XY として表現されるため、 z は (X, Y) の組で表現され得る。
  4. ブロック = 512ビット列。 ブロック(たとえば、B)は16ワード列として表現可能である。

3. ワード演算

以下の論理演算がワードに対して適用される:

  1. ワードに対するビットごとの論理演算
    XY
    XY のビットごとの論理積。
    XY
    XY のビットごとの包含的論理和。(論理和)
    X XOR Y
    XY のビットごとの排他的論理和。
    ¬X
    X のビットごとの補数。
    例:
          01101100101110011101001001111011
    XOR   01100101110000010110100110110111
          --------------------------------
      =   00001001011110001011101111001100
    
  2. 演算 X + Y は以下の通り定義される: ワード X, Y は整数 x, y として表現される。 (ここで、0 ≦ x < 232 かつ 0 ≦ y < 232。) 正整数 n, m に対する n/m の剰余を n mod m として、

    z = (x + y) mod 232

    を計算する。ここで、0 ≦ z < 232 である zZ に変換し、 Z = X + Y と定義する。
  3. X がワード、n, が 0 ≦ n < 32 なる整数のとき、 循環左シフト演算 Sn(X) は以下の通り定義される。

    Sn(X) = (X << n) ∨ (X >> 32 - n)

    ここで、X << n は以下の通り計算される: X の左側 n ビットを捨て、 右側に n 個のゼロを加えて左詰めする。 (この結果は32ビット長である。) X >> nX の左側 n ビットを捨て、 左側に n 個のゼロを加えて右詰めすることによって計算される。 このように Sn(X) は Xn 個分だけ左に循環シフトしたものと等価になる。

4. メッセージパディング

SHA-1は入力として与えられたメッセージまたはデータファイル のメッセージ要約値計算に使用されている。 そのメッセージまたはデータファイルはビット列として見なされるべきである。 メッセージのビット長がメッセージの長さとなる。 (空のメッセージは長さ 0 になる。) メッセージのビット長が8の倍数であれば、 そのメッセージは16進数として短く表現可能である。 メッセージバディングの目的はパディングされたメッセージの長さを 512 の倍数にすることである。 SHA-1 はメッセージ要約値を計算する際には 512 ビットのブロックごとに順番に計算する。 以下でこのパディングがどのようにして行われるかを規定する。 要約すれば、64ビットの整数、m 個の "0"、1個の "1" が 512n 長のメッセージにするためにその末尾に追加される。 64ビットの整数は l、元のメッセージの長さである。 パディングされたメッセージはこの後に n 個の 512 ビットブロックとして SHA-1 によって処理される。

メッセージ長 l < 264 と仮定する。 SHA-1 に入力される前にメッセージは以下の通り右側にパディングされる:

  1. "1" が追加される。 例: 元のメッセージが "01010000" の場合、 "010100001" にパディングされる。
  2. 複数の "0" が追加される。"0" の個数は元のメッセージ長に依存する。 最後の512ビットブロックの最後の64ビットは元のメッセージ長 l のために予約されている。

    例: 元のメッセージが以下のビット列とした場合、

    01100001 01100010 01100011 01100100 01100101
    

    最初のステップ (1.) の後は

    01100001 01100010 01100011 01100100 01100101 1
    

    となる。l = 40、上のビット長は41ビットのため、 407個の "0" が追加されて合計 448 ビットになる。

    61626364 65800000 00000000 00000000
    00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000000
    00000000 00000000
    
  3. 元のメッセージのビット長 l の2ワード表現を得る。 l < 232 のとき、最初のワードは全てゼロになる。 それらの2ワードをパディングされたメッセージに追加する。

    例: 元のメッセージを上 (2.) で述べたものとすると、l = 40 である。 (パディングが行われる前に計算されていることに注意。) 40 の2ワード表現は16進数で 00000000 00000028 であるから、 パディングが行われた最終のメッセージは16進で以下の通りになる:

    61626364 65800000 00000000 00000000
    00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000028
    
    パディングが行われたメッセージは 16n ワード (n > 0) を含んでいる。 パディングが行われたメッセージは M1, M2, ... Mn なる n ブロック の並びと見なされる。 ここで、それぞれの Mi は16ワードを含み、M1 はメッセージの最初の文字(またはビット)が含まれることになる。

5. 使用される関数

SHA-1では、論理関数の並び f0, f1, ... f79 が使用される。 それぞれの ft (0 ≦ t ≦ 79) は3つの32ビットワード B, C, D, に対して演算を行い、32ビットワードを出力する。 ft(B, C, D) は以下の通り定義される: for words B, C, D,

6. 使用される定数

SHA-1 では、定数ワードの並び K(0), K(1), ... K(79) が使用される。それらは16進数で以下の通り与えられる:

7. メッセージ要約値の計算

メッセージ要約値は最後までパディングされたメッセージに対して計算される。 計算には、それぞれ5個の32ビットワードと80個の32ビットワードからなる 2個のバッファを使用する。 最初の5ワードのバッファは A, B, C, D, E のラベルが付けられる。 80ワードの並びは W0, W1, ... W79 のラベルが付けられる。 この他に、単ワードのバッファ TEMP も使用される。

メッセージ要約値を生成する際には、 16ワードのブロック(4節で定義されている) M1, M2, ... Mn を順番に処理する。 それぞれの Mi に対して80ステップの処理が行われる。

ブロックを処理する前に {Hi} を以下の通り初期化する: 16進数で、

ここで M1, M2, ... Mn が処理される。 Mi を処理するには以下の通り続ける:

  1. MiW0, W1, ... W15 の16ワードに分割する。 ここで、W0 が一番左のワードである。
  2. t = 16 から t = 79 に対して、 Wt = S1(Wt - 3 XOR Wt - 8 XOR Wt - 14 XOR Wt - 16) を代入する。
  3. A = H0, B = H1, C = H2, D = H3, E = H4 を代入する。
  4. t = 0 から t = 79 に対して以下の処理を行う:
    1. TEMP = S5(A) + ft(B, C, D) + E + Wt + Kt;
    2. E = D; D = C; C = S30(B); B = A; A = TEMP;
  5. H0 = H0 + A, H1 = H1 + B, H2 = H2 + C, H3 = H3 + D, H4 = H4 + E を代入。

Mn を処理し終わった後、 メッセージ要約値は以下の5ワードで表現される160ビット長のビット列である:

H0 H1 H2 H3 H4

8. 代替可能な計算手順

上記の方法では W0, ..., W79 が80個の32ビットワードで実装されていることを仮定している。 これは実行時間の短縮という見地から考えると非常に効率的である。 何故ならば、 2番目のステップにおいて Wt - 3, ... Wt - 16 のアドレスは簡単に計算可能だからである。 記憶領域が貴重である(少ない)場合、 代替手段として {Wt} を循環キュー(16個の32ビットワード W[0], ..., W[15]) と見なす方法がある。 この場合、16進数として MASK = 000000F を代入し、 Mi を以下の通り処理する:

  1. MiW[0], ..., W[15] の16ワードに分割する。 ここで、W[0] が一番左のワードである。
  2. A = H0, B = H1, C = H2, D = H3, E = H4 を代入する。
  3. t = 0 から t = 79 まで以下の演算を行う:
    1. s = tMASK
    2. if(t ≧ 16) W[s] = S1(W[(s + 13) ∧ MASK] XOR W[(s + 8) ∧ MASK] XOR W[(s + 2) ∧ MASK] XOR W[s]);
    3. TEMP = S5(A) + ft(B, C, D) + E + W[s] + Kt;
    4. E = D; D = C; C = S30(B); B = A; A = TEMP;
  4. H0 = H0 + A, H1 = H1 + B, H2 = H2 + C, H3 = H3 + D, H4 = H4 + E を代入。

9. 手順の比較

7節、8節の方法は同一のメッセージ要約値を出力する。 8節の方法によって64個の32ビットワード領域を節約することができるが、 3番目のステップにおいて {W[t]} を計算するためにアドレス計算が複雑になるため、 実行時間が長くなるはずである。 この標準に適合するような同一の結果を出す他の計算手順の実装もあり得るだろう。

付録A. サンプルメッセージとそのメッセージ要約値 (1)

この付録は参考のためのみに提供され、標準の一部と見なされる必要はない。

メッセージとして "abc" の ASCII 表現、すなわち

01100001 01100010 01100011

を与える。

このメッセージ長 l = 24 である。 第4節の第1ステップで "1" を追加する。 第2ステップで 423個の "0" を追加する。 第3ステップで 16進数の 00000000 00000018 (24の2ワード表現)を加える。 それゆえにパディングされた後のメッセージは1ブロックからなり、 第4節の表記で n = 1 となる。

{Hi} の16進初期値は以下の通りである:

ブロック1の処理を開始する。ブロック1のワードは以下の通りである:

"for t = 0 to 79"(第7節の第4ステップ、または第8節の第3ステップ) のパスtの後における A, B, C, D, E の16進値は以下の通りである:

            A           B           C           D           E

t =  0: 0116FC33    67452301    7BF36AE2    98BADCFE    10325476
t =  1: 8990536D    0116FC33    59D148C0    7BF36AE2    98BADCFE
t =  2: A1390F08    8990536D    C045BF0C    59D148C0    7BF36AE2
t =  3: CDD8E11B    A1390F08    626414DB    C045BF0C    59D148C0
t =  4: CFD499DE    CDD8E11B    284E43C2    626414DB    C045BF0C
t =  5: 3FC7CA40    CFD499DE    F3763846    284E43C2    626414DB
t =  6: 993E30C1    3FC7CA40    B3F52677    F3763846    284E43C2
t =  7: 9E8C07D4    993E30C1    0FF1F290    B3F52677    F3763846
t =  8: 4B6AE328    9E8C07D4    664F8C30    0FF1F290    B3F52677
t =  9: 8351F929    4B6AE328    27A301F5    664F8C30    0FF1F290
t = 10: FBDA9E89    8351F929    12DAB8CA    27A301F5    664F8C30
t = 11: 63188FE4    FBDA9E89    60D47E4A    12DAB8CA    27A301F5
t = 12: 4607B664    63188FE4    7EF6A7A2    60D47E4A    12DAB8CA
t = 13: 9128F695    4607B664    18C623F9    7EF6A7A2    60D47E4A
t = 14: 196BEE77    9128F695    1181ED99    18C623F9    7EF6A7A2
t = 15: 20BDD62F    196BEE77    644A3DA5    1181ED99    18C623F9
t = 16: 4E925823    20BDD62F    C65AFB9D    644A3DA5    1181ED99
t = 17: 82AA6728    4E925823    C82F758B    C65AFB9D    644A3DA5
t = 18: DC64901D    82AA6728    D3A49608    C82F758B    C65AFB9D
t = 19: FD9E1D7D    DC64901D    20AA99CA    D3A49608    C82F758B
t = 20: 1A37B0CA    FD9E1D7D    77192407    20AA99CA    D3A49608
t = 21: 33A23BFC    1A37B0CA    7F67875F    77192407    20AA99CA
t = 22: 21283486    33A23BFC    868DEC32    7F67875F    77192407
t = 23: D541F12D    21283486    0CE88EFF    868DEC32    7F67875F
t = 24: C7567DC6    D541F12D    884A0D21    0CE88EFF    868DEC32
t = 25: 48413BA4    C7567DC6    75507C4B    884A0D21    0CE88EFF
t = 26: BE35FBD5    48413BA4    B1D59F71    75507C4B    884A0D21
t = 27: 4AA84D97    BE35FBD5    12104EE9    B1D59F71    75507C4B
t = 28: 8370B52E    4AA84D97    6F8D7EF5    12104EE9    B1D59F71
t = 29: C5FBAF5D    8370B52E    D2AA1365    6F8D7EF5    12104EE9
t = 30: 1267B407    C5FBAF5D    A0DC2D4B    D2AA1365    6F8D7EF5
t = 31: 3B845D33    1267B407    717EEBD7    A0DC2D4B    D2AA1365
t = 32: 046FAA0A    3B845D33    C499ED01    717EEBD7    A0DC2D4B
t = 33: 2C0EBC11    046FAA0A    CEE1174C    C499ED01    717EEBD7
t = 34: 21796AD4    2C0EBC11    811BEA82    CEE1174C    C499ED01
t = 35: DCBBB0CB    21796AD4    4B03AF04    811BEA82    CEE1174C
t = 36: 0F511FD8    DCBBB0CB    085E5AB5    4B03AF04    811BEA82
t = 37: DC63973F    0F511FD8    F72EEC32    085E5AB5    4B03AF04
t = 38: 4C986405    DC63973F    03D447F6    F72EEC32    085E5AB5
t = 39: 32DE1CBA    4C986405    F718E5CF    03D447F6    F72EEC32
t = 40: FC87DEDF    32DE1CBA    53261901    F718E5CF    03D447F6
t = 41: 970A0D5C    FC87DEDF    8CB7872E    53261901    F718E5CF
t = 42: 7F193DC5    970A0D5C    FF21F7B7    8CB7872E    53261901
t = 43: EE1B1AAF    7F193DC5    25C28357    FF21F7B7    8CB7872E
t = 44: 40F28E09    EE1B1AAF    5FC64F71    25C28357    FF21F7B7
t = 45: 1C51E1F2    40F28E09    FB86C6AB    5FC64F71    25C28357
t = 46: A01B846C    1C51E1F2    503CA382    FB86C6AB    5FC64F71
t = 47: BEAD02CA    A01B846C    8714787C    503CA382    FB86C6AB
t = 48: BAF39337    BEAD02CA    2806E11B    8714787C    503CA382
t = 49: 120731C5    BAF39337    AFAB40B2    2806E11B    8714787C
t = 50: 641DB2CE    120731C5    EEBCE4CD    AFAB40B2    2806E11B
t = 51: 3847AD66    641DB2CE    4481CC71    EEBCE4CD    AFAB40B2
t = 52: E490436D    3847AD66    99076CB3    4481CC71    EEBCE4CD
t = 53: 27E9F1D8    E490436D    8E11EB59    99076CB3    4481CC71
t = 54: 7B71F76D    27E9F1D8    792410DB    8E11EB59    99076CB3
t = 55: 5E6456AF    7B71F76D    09FA7C76    792410DB    8E11EB59
t = 56: C846093F    5E6456AF    5EDC7DDB    09FA7C76    792410DB
t = 57: D262FF50    C846093F    D79915AB    5EDC7DDB    09FA7C76
t = 58: 09D785FD    D262FF50    F211824F    D79915AB    5EDC7DDB
t = 59: 3F52DE5A    09D785FD    3498BFD4    F211824F    D79915AB
t = 60: D756C147    3F52DE5A    4275E17F    3498BFD4    F211824F
t = 61: 548C9CB2    D756C147    8FD4B796    4275E17F    3498BFD4
t = 62: B66C020B    548C9CB2    F5D5B051    8FD4B796    4275E17F
t = 63: 6B61C9E1    B66C020B    9523272C    F5D5B051    8FD4B796
t = 64: 19DFA7AC    6B61C9E1    ED9B0082    9523272C    F5D5B051
t = 65: 101655F9    19DFA7AC    5AD87278    ED9B0082    9523272C
t = 66: 0C3DF2B4    101655F9    0677E9EB    5AD87278    ED9B0082
t = 67: 78DD4D2B    0C3DF2B4    4405957E    0677E9EB    5AD87278
t = 68: 497093C0    78DD4D2B    030F7CAD    4405957E    0677E9EB
t = 69: 3F2588C2    497093C0    DE37534A    030F7CAD    4405957E
t = 70: C199F8C7    3F2588C2    125C24F0    DE37534A    030F7CAD
t = 71: 39859DE7    C199F8C7    8FC96230    125C24F0    DE37534A
t = 72: EDB42DE4    39859DE7    F0667E31    8FC96230    125C24F0
t = 73: 11793F6F    EDB42DE4    CE616779    F0667E31    8FC96230
t = 74: 5EE76897    11793F6F    3B6D0B79    CE616779    F0667E31
t = 75: 63F7DAB7    5EE76897    C45E4FDB    3B6D0B79    CE616779
t = 76: A079B7D9    63F7DAB7    D7B9DA25    C45E4FDB    3B6D0B79
t = 77: 860D21CC    A079B7D9    D8FDF6AD    D7B9DA25    C45E4FDB
t = 78: 5738D5E1    860D21CC    681E6DF6    D8FDF6AD    D7B9DA25
t = 79: 42541B35    5738D5E1    21834873    681E6DF6    D8FDF6AD

以上でブロック1の処理が終了した。 {Hi}の値は以下の通りである:

よって、メッセージ要約値 = A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D となる。

付録B. サンプルメッセージとそのメッセージ要約値 (2)

この付録は参考のためのみに提供され、標準の一部と見なされる必要はない。

メッセージとして以下のASCII文字列の 2進形式を与える:

"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"

56文字それぞれにつき、8ビットに変換されるため、メッセージ長 l = 448 となる。 8節の第1ステップで、"1" を追加する。 第2ステップで、511個の "0" を追加する。 第3ステップで、448 の2ワード表現、すなわち "00000000 000001C0" を追加する。 以上によって n = 2 を得る。

{Hi} の16進初期値は以下の通りである:

ブロック1の処理を開始する。ブロック1のワードは以下の通りである:

"for t = 0 to 79"(第7節の第4ステップ、または第8節の第3ステップ) のパスtの後における A, B, C, D, E の16進値は以下の通りである:

            A           B           C           D           E

t =  0: 0116FC17    67452301    7BF36AE2    98BADCFE    10325476
t =  1: EBF3B452    0116FC17    59D148C0    7BF36AE2    98BADCFE
t =  2: 5109913A    EBF3B452    C045BF05    59D148C0    7BF36AE2
t =  3: 2C4F6EAC    5109913A    BAFCED14    C045BF05    59D148C0
t =  4: 33F4AE5B    2C4F6EAC    9442644E    BAFCED14    C045BF05
t =  5: 96B85189    33F4AE5B    0B13DBAB    9442644E    BAFCED14
t =  6: DB04CB58    96B85189    CCFD2B96    0B13DBAB    9442644E
t =  7: 45833F0F    DB04CB58    65AE1462    CCFD2B96    0B13DBAB
t =  8: C565C35E    45833F0F    36C132D6    65AE1462    CCFD2B96
t =  9: 6350AFDA    C565C35E    D160CFC3    36C132D6    65AE1462
t = 10: 8993EA77    6350AFDA    B15970D7    D160CFC3    36C132D6
t = 11: E19ECAA2    8993EA77    98D42BF6    B15970D7    D160CFC3
t = 12: 8603481E    E19ECAA2    E264FA9D    98D42BF6    B15970D7
t = 13: 32F94A85    8603481E    B867B2A8    E264FA9D    98D42BF6
t = 14: B2E7A8BE    32F94A85    A180D207    B867B2A8    E264FA9D
t = 15: 42637E39    B2E7A8BE    4CBE52A1    A180D207    B867B2A8
t = 16: 6B068048    42637E39    ACB9EA2F    4CBE52A1    A180D207
t = 17: 426B9C35    6B068048    5098DF8E    ACB9EA2F    4CBE52A1
t = 18: 944B1BD1    426B9C35    1AC1A012    5098DF8E    ACB9EA2F
t = 19: 6C445652    944B1BD1    509AE70D    1AC1A012    5098DF8E
t = 20: 95836DA5    6C445652    6512C6F4    509AE70D    1AC1A012
t = 21: 09511177    95836DA5    9B111594    6512C6F4    509AE70D
t = 22: E2B92DC4    09511177    6560DB69    9B111594    6512C6F4
t = 23: FD224575    E2B92DC4    C254445D    6560DB69    9B111594
t = 24: EEB82D9A    FD224575    38AE4B71    C254445D    6560DB69
t = 25: 5A142C1A    EEB82D9A    7F48915D    38AE4B71    C254445D
t = 26: 2972F7C7    5A142C1A    BBAE0B66    7F48915D    38AE4B71
t = 27: D526A644    2972F7C7    96850B06    BBAE0B66    7F48915D
t = 28: E1122421    D526A644    CA5CBDF1    96850B06    BBAE0B66
t = 29: 05B457B2    E1122421    3549A991    CA5CBDF1    96850B06
t = 30: A9C84BEC    05B457B2    78448908    3549A991    CA5CBDF1
t = 31: 52E31F60    A9C84BEC    816D15EC    78448908    3549A991
t = 32: 5AF3242C    52E31F60    2A7212FB    816D15EC    78448908
t = 33: 31C756A9    5AF3242C    14B8C7D8    2A7212FB    816D15EC
t = 34: E9AC987C    31C756A9    16BCC90B    14B8C7D8    2A7212FB
t = 35: AB7C32EE    E9AC987C    4C71D5AA    16BCC90B    14B8C7D8
t = 36: 5933FC99    AB7C32EE    3A6B261F    4C71D5AA    16BCC90B
t = 37: 43F87AE9    5933FC99    AADF0CBB    3A6B261F    4C71D5AA
t = 38: 24957F22    43F87AE9    564CFF26    AADF0CBB    3A6B261F
t = 39: ADEB7478    24957F22    50FE1EBA    564CFF26    AADF0CBB
t = 40: D70E5010    ADEB7478    89255FC8    50FE1EBA    564CFF26
t = 41: 79BCFB08    D70E5010    2B7ADD1E    89255FC8    50FE1EBA
t = 42: F9BCB8DE    79BCFB08    35C39404    2B7ADD1E    89255FC8
t = 43: 633E9561    F9BCB8DE    1E6F3EC2    35C39404    2B7ADD1E
t = 44: 98C1EA64    633E9561    BE6F2E37    1E6F3EC2    35C39404
t = 45: C6EA241E    98C1EA64    58CFA558    BE6F2E37    1E6F3EC2
t = 46: A2AD4F02    C6EA241E    26307A99    58CFA558    BE6F2E37
t = 47: C8A69090    A2AD4F02    B1BA8907    26307A99    58CFA558
t = 48: 88341600    C8A69090    A8AB53C0    B1BA8907    26307A99
t = 49: 7E846F58    88341600    3229A424    A8AB53C0    B1BA8907
t = 50: 86E358BA    7E846F58    220D0580    3229A424    A8AB53C0
t = 51: 8D2E76C8    86E358BA    1FA11BD6    220D0580    3229A424
t = 52: CE892E10    8D2E76C8    A1B8D62E    1FA11BD6    220D0580
t = 53: EDEA95B1    CE892E10    234B9DB2    A1B8D62E    1FA11BD6
t = 54: 36D1230A    EDEA95B1    33A24B84    234B9DB2    A1B8D62E
t = 55: 776C3910    36D1230A    7B7AA56C    33A24B84    234B9DB2
t = 56: A681B723    776C3910    8DB448C2    7B7AA56C    33A24B84
t = 57: AC0A794F    A681B723    1DDB0E44    8DB448C2    7B7AA56C
t = 58: F03D3782    AC0A794F    E9A06DC8    1DDB0E44    8DB448C2
t = 59: 9EF775C3    F03D3782    EB029E53    E9A06DC8    1DDB0E44
t = 60: 36254B13    9EF775C3    BC0F4DE0    EB029E53    E9A06DC8
t = 61: 4080D4DC    36254B13    E7BDDD70    BC0F4DE0    EB029E53
t = 62: 2BFAF7A8    4080D4DC    CD8952C4    E7BDDD70    BC0F4DE0
t = 63: 513F9CA0    2BFAF7A8    10203537    CD8952C4    E7BDDD70
t = 64: E5895C81    513F9CA0    0AFEBDEA    10203537    CD8952C4
t = 65: 1037D2D5    E5895C81    144FE728    0AFEBDEA    10203537
t = 66: 14A82DA9    1037D2D5    79625720    144FE728    0AFEBDEA
t = 67: 6D17C9FD    14A82DA9    440DF4B5    79625720    144FE728
t = 68: 2C7B07BD    6D17C9FD    452A0B6A    440DF4B5    79625720
t = 69: FDF6EFFF    2C7B07BD    5B45F27F    452A0B6A    440DF4B5
t = 70: 112B96E3    FDF6EFFF    4B1EC1EF    5B45F27F    452A0B6A
t = 71: 84065712    112B96E3    FF7DBBFF    4B1EC1EF    5B45F27F
t = 72: AB89FB71    84065712    C44AE5B8    FF7DBBFF    4B1EC1EF
t = 73: C5210E35    AB89FB71    A10195C4    C44AE5B8    FF7DBBFF
t = 74: 352D9F4B    C5210E35    6AE27EDC    A10195C4    C44AE5B8
t = 75: 1A0E0E0A    352D9F4B    7148438D    6AE27EDC    A10195C4
t = 76: D0D47349    1A0E0E0A    CD4B67D2    7148438D    6AE27EDC
t = 77: AD38620D    D0D47349    86838382    CD4B67D2    7148438D
t = 78: D3AD7C25    AD38620D    74351CD2    86838382    CD4B67D2
t = 79: 8CE34517    D3AD7C25    6B4E1883    74351CD2    86838382

以上でブロック1の処理が終了した。 {Hi}の値は以下の通りである:

ブロック2の処理を開始する。ブロック2のワードは以下の通りである:

"for t = 0 to 79"(第7節の第4ステップ、または第8節の第3ステップ) のパスtの後における A, B, C, D, E の16進値は以下の通りである:


            A           B           C           D           E

t =  0: 2DF257E9    F4286818    B0DEC9EB    0408F581    84677148
t =  1: 4D3DC58F    2DF257E9    3D0A1A06    B0DEC9EB    0408F581
t =  2: C352BB05    4D3DC58F    4B7C95FA    3D0A1A06    B0DEC9EB
t =  3: EEF743C6    C352BB05    D34F7163    4B7C95FA    3D0A1A06
t =  4: 41E34277    EEF743C6    70D4AEC1    D34F7163    4B7C95FA
t =  5: 5443915C    41E34277    BBBDD0F1    70D4AEC1    D34F7163
t =  6: E7FA0377    5443915C    D078D09D    BBBDD0F1    70D4AEC1
t =  7: C6946813    E7FA0377    1510E457    D078D09D    BBBDD0F1
t =  8: FDDE1DE1    C6946813    F9FE80DD    1510E457    D078D09D
t =  9: B8538ACA    FDDE1DE1    F1A51A04    F9FE80DD    1510E457
t = 10: 6BA94F63    B8538ACA    7F778778    F1A51A04    F9FE80DD
t = 11: 43A2792F    6BA94F63    AE14E2B2    7F778778    F1A51A04
t = 12: FECD7BBF    43A2792F    DAEA53D8    AE14E2B2    7F778778
t = 13: A2604CA8    FECD7BBF    D0E89E4B    DAEA53D8    AE14E2B2
t = 14: 258B0BAA    A2604CA8    FFB35EEF    D0E89E4B    DAEA53D8
t = 15: D9772360    258B0BAA    2898132A    FFB35EEF    D0E89E4B
t = 16: 5507DB6E    D9772360    8962C2EA    2898132A    FFB35EEF
t = 17: A51B58BC    5507DB6E    365DC8D8    8962C2EA    2898132A
t = 18: C2EB709F    A51B58BC    9541F6DB    365DC8D8    8962C2EA
t = 19: D8992153    C2EB709F    2946D62F    9541F6DB    365DC8D8
t = 20: 37482F5F    D8992153    F0BADC27    2946D62F    9541F6DB
t = 21: EE8700BD    37482F5F    F6264854    F0BADC27    2946D62F
t = 22: 9AD594B9    EE8700BD    CDD20BD7    F6264854    F0BADC27
t = 23: 8FBAA5B9    9AD594B9    7BA1C02F    CDD20BD7    F6264854
t = 24: 88FB5867    8FBAA5B9    66B5652E    7BA1C02F    CDD20BD7
t = 25: EEC50521    88FB5867    63EEA96E    66B5652E    7BA1C02F
t = 26: 50BCE434    EEC50521    E23ED619    63EEA96E    66B5652E
t = 27: 5C416DAF    50BCE434    7BB14148    E23ED619    63EEA96E
t = 28: 2429BE5F    5C416DAF    142F390D    7BB14148    E23ED619
t = 29: 0A2FB108    2429BE5F    D7105B6B    142F390D    7BB14148
t = 30: 17986223    0A2FB108    C90A6F97    D7105B6B    142F390D
t = 31: 8A4AF384    17986223    028BEC42    C90A6F97    D7105B6B
t = 32: 6B629993    8A4AF384    C5E61888    028BEC42    C90A6F97
t = 33: F15F04F3    6B629993    2292BCE1    C5E61888    028BEC42
t = 34: 295CC25B    F15F04F3    DAD8A664    2292BCE1    C5E61888
t = 35: 696DA404    295CC25B    FC57C13C    DAD8A664    2292BCE1
t = 36: CEF5AE12    696DA404    CA573096    FC57C13C    DAD8A664
t = 37: 87D5B80C    CEF5AE12    1A5B6901    CA573096    FC57C13C
t = 38: 84E2A5F2    87D5B80C    B3BD6B84    1A5B6901    CA573096
t = 39: 03BB6310    84E2A5F2    21F56E03    B3BD6B84    1A5B6901
t = 40: C2D8F75F    03BB6310    A138A97C    21F56E03    B3BD6B84
t = 41: BFB25768    C2D8F75F    00EED8C4    A138A97C    21F56E03
t = 42: 28589152    BFB25768    F0B63DD7    00EED8C4    A138A97C
t = 43: EC1D3D61    28589152    2FEC95DA    F0B63DD7    00EED8C4
t = 44: 3CAED7AF    EC1D3D61    8A162454    2FEC95DA    F0B63DD7
t = 45: C3D033EA    3CAED7AF    7B074F58    8A162454    2FEC95DA
t = 46: 7316056A    C3D033EA    CF2BB5EB    7B074F58    8A162454
t = 47: 46F93B68    7316056A    B0F40CFA    CF2BB5EB    7B074F58
t = 48: DC8E7F26    46F93B68    9CC5815A    B0F40CFA    CF2BB5EB
t = 49: 850D411C    DC8E7F26    11BE4EDA    9CC5815A    B0F40CFA
t = 50: 7E4672C0    850D411C    B7239FC9    11BE4EDA    9CC5815A
t = 51: 89FBD41D    7E4672C0    21435047    B7239FC9    11BE4EDA
t = 52: 1797E228    89FBD41D    1F919CB0    21435047    B7239FC9
t = 53: 431D65BC    1797E228    627EF507    1F919CB0    21435047
t = 54: 2BDBB8CB    431D65BC    05E5F88A    627EF507    1F919CB0
t = 55: 6DA72E7F    2BDBB8CB    10C7596F    05E5F88A    627EF507
t = 56: A8495A9B    6DA72E7F    CAF6EE32    10C7596F    05E5F88A
t = 57: E785655A    A8495A9B    DB69CB9F    CAF6EE32    10C7596F
t = 58: 5B086C42    E785655A    EA1256A6    DB69CB9F    CAF6EE32
t = 59: A65818F7    5B086C42    B9E15956    EA1256A6    DB69CB9F
t = 60: 7AAB101B    A65818F7    96C21B10    B9E15956    EA1256A6
t = 61: 93614C9C    7AAB101B    E996063D    96C21B10    B9E15956
t = 62: F66D9BF4    93614C9C    DEAAC406    E996063D    96C21B10
t = 63: D504902B    F66D9BF4    24D85327    DEAAC406    E996063D
t = 64: 60A9DA62    D504902B    3D9B66FD    24D85327    DEAAC406
t = 65: 8B687819    60A9DA62    F541240A    3D9B66FD    24D85327
t = 66: 083E90C3    8B687819    982A7698    F541240A    3D9B66FD
t = 67: F6226BBF    083E90C3    62DA1E06    982A7698    F541240A
t = 68: 76C0563B    F6226BBF    C20FA430    62DA1E06    982A7698
t = 69: 989DD165    76C0563B    FD889AEF    C20FA430    62DA1E06
t = 70: 8B2C7573    989DD165    DDB0158E    FD889AEF    C20FA430
t = 71: AE1B8E7B    8B2C7573    66277459    DDB0158E    FD889AEF
t = 72: CA1840DE    AE1B8E7B    E2CB1D5C    66277459    DDB0158E
t = 73: 16F3BABB    CA1840DE    EB86E39E    E2CB1D5C    66277459
t = 74: D28D83AD    16F3BABB    B2861037    EB86E39E    E2CB1D5C
t = 75: 6BC02DFE    D28D83AD    C5BCEEAE    B2861037    EB86E39E
t = 76: D3A6E275    6BC02DFE    74A360EB    C5BCEEAE    B2861037
t = 77: DA955482    D3A6E275    9AF00B7F    74A360EB    C5BCEEAE
t = 78: 58C0AAC0    DA955482    74E9B89D    9AF00B7F    74A360EB
t = 79: 906FD62C    58C0AAC0    B6A55520    74E9B89D    9AF00B7F

以上でブロック2の処理が終了した。 {Hi}の値は以下の通りである:

よって、メッセージ要約値 = 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1 となる。

付録C. サンプルメッセージとそのメッセージ要約値 (3)

この付録は参考のためのみに提供され、標準の一部と見なされる必要はない。

メッセージとして "a" を 1,000,000 回繰り返したものからなるASCII文字列の2進形式を与える。

メッセージ要約値 = 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F となる。


Original: National Institute of Standards and Technology (NIST)
Translation: © 2000 HIRATA Yasuyuki <[email protected]>, All rights reserved.