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)