メインコンテンツまでスキップ

3. Operations on Words (ワードに対する操作)

本文書で規定されているすべての4つのハッシュ操作において、以下の論理演算子がワードに適用されます。SHA-224とSHA-256は32ビットワードで動作し、SHA-384とSHA-512は64ビットワードで動作します。

以下の操作において、x<<n は次のように得られます: x の最も左の n ビットを破棄し、その結果の右側に n 個のゼロビットでパディングします(結果は同じビット数のままです)。同様に、x>>n は次のように得られます: x の最も右の n ビットを破棄し、その結果の左側に n 個のゼロビットを前置します(結果は同じビット数のままです)。

a. ビット単位論理ワード操作 (Bitwise Logical Word Operations)

X AND Y  =  X と Y のビット単位論理「AND」演算.

X OR Y = X と Y のビット単位論理「包含OR」演算.

X XOR Y = X と Y のビット単位論理「排他的OR」演算.

NOT X = X のビット単位論理「補数」演算.

例:

         01101100101110011101001001111011
XOR 01100101110000010110100110110111
--------------------------------
= 00001001011110001011101111001100

b. 演算 X + Y は次のように定義されます: ワード X と Y は w ビット整数 x と y を表し、0 <= x < 2^w かつ 0 <= y < 2^w です。正の整数 n と m に対して、

n mod m

を n を m で割った余りとします。次を計算します:

z  =  (x + y) mod 2^w.

すると 0 <= z < 2^w となります。z をワード Z に変換し、Z = X + Y と定義します。

c. 右シフト操作 (Right Shift Operation) SHR^n(x)、ここで x は w ビットワードで、n は 0 <= n < w を満たす整数であり、次のように定義されます:

SHR^n(x) = x>>n

d. 右循環シフト操作 (Rotate Right / Circular Right Shift) ROTR^n(x)、ここで x は w ビットワードで、n は 0 <= n < w を満たす整数であり、次のように定義されます:

ROTR^n(x) = (x>>n) OR (x<<(w-n))

e. 左循環シフト操作 (Rotate Left / Circular Left Shift) ROTL^n(x)、ここで x は w ビットワードで、n は 0 <= n < w を満たす整数であり、次のように定義されます:

ROTL^n(X) = (x<<n) OR (x>>(w-n))

以下の等価関係に注意してください。各関係において w は固定です:

ROTL^n(x) = ROTR^(w-n)(x)

ROTR^n(x) = ROTL^(w-n)(x)