Zum Hauptinhalt springen

3. Operations on Words (Operationen auf Wörtern)

Die folgenden logischen Operatoren werden auf Wörter in allen vier hier spezifizierten Hash-Operationen angewendet. SHA-224 und SHA-256 arbeiten mit 32-Bit-Wörtern, während SHA-384 und SHA-512 mit 64-Bit-Wörtern arbeiten.

In den folgenden Operationen wird x<<n wie folgt erhalten: die n linkesten Bits von x werden verworfen und das Ergebnis dann rechts mit n Null-Bits aufgefüllt (das Ergebnis hat weiterhin die gleiche Anzahl von Bits). Ähnlich wird x>>n wie folgt erhalten: die n rechtesten Bits von x werden verworfen und das Ergebnis dann links mit n Null-Bits vorangestellt (das Ergebnis hat weiterhin die gleiche Anzahl von Bits).

a. Bitweise logische Wortoperationen (Bitwise Logical Word Operations)

X AND Y  =  bitweises logisches "und" von X und Y.

X OR Y = bitweises logisches "inklusiv-oder" von X und Y.

X XOR Y = bitweises logisches "exklusiv-oder" von X und Y.

NOT X = bitweises logisches "Komplement" von X.

Beispiel:

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

b. Die Operation X + Y ist wie folgt definiert: Die Wörter X und Y repräsentieren w-Bit-Ganzzahlen x und y, wobei 0 <= x < 2^w und 0 <= y < 2^w. Für positive Ganzzahlen n und m sei

n mod m

der Rest bei Division von n durch m. Berechne

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

Dann ist 0 <= z < 2^w. Konvertiere z in ein Wort Z und definiere Z = X + Y.

c. Die Rechtsverschiebungsoperation (Right Shift Operation) SHR^n(x), wobei x ein w-Bit-Wort ist und n eine Ganzzahl mit 0 <= n < w, ist definiert durch

SHR^n(x) = x>>n

d. Die Rotation-nach-rechts-Operation (zirkulare Rechtsverschiebung / Rotate Right / Circular Right Shift) ROTR^n(x), wobei x ein w-Bit-Wort ist und n eine Ganzzahl mit 0 <= n < w, ist definiert durch

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

e. Die Rotation-nach-links-Operation (zirkulare Linksverschiebung / Rotate Left / Circular Left Shift) ROTL^n(x), wobei x ein w-Bit-Wort ist und n eine Ganzzahl mit 0 <= n < w, ist definiert durch

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

Beachten Sie die folgenden Äquivalenzbeziehungen, wobei w in jeder Beziehung fest ist:

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

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