Wie bereits angedeutet, werden hierfür folgende Elemente des CAST-128 weiter verwendet:
Im Speziellen wird der Algorithmus wie folgt beschrieben: Sei
ein 128-Bit-Block mit
jew. 32-Bit und sei
die Kurznotation für
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
und
die Kurznotation für
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
wobei als ``Vorwärts-Vierer-Runde'' und
als ``Rückwärts-Vierer-Runde'' bezeichnet wird.
Sei weiterhin
die Menge der 5-Bit-Rotations-Schlüssel für die
-te Vierer-Runde. Analog sei
die Menge der 32-Bit-Masken-Schlüssel für die
-te Vierer-Runde.
Sei
ein 256-Bit-Block mit
jew. 32-Bit und sei
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
wobei auch als ``Vorwärts-Oktave'' bezeichnet wird.
Sei desweiteren
die Kurznotation für
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
wobei die
niederwertigsten Bits von
darstellt. Analog sei
die Kurznotation für
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
![]() |
![]() |
Nun kann die Verschüsselung selbst definiert werden:
Zur Entschlüsselung wird der gleiche Algorithmus verwendet werden, nur muß hierbei (vorher) die Reihenfolge der Vierer-Rundenschlüssel umgekehrt werden:
Wie schon angedeutet, wird für den CAST-256 ein neuer Algorithmus für die Berechnung der Rundenschlüssel angegeben:
Initialisierung:
Rundenschlüsselberechnung:
Falls der ``Primärschlüssel'' kleiner als 256 Bit sein sollte, wird dieser bis 256 Bits links (niederwertig) mit Nullen aufgefüllt.