CBC steht für Cipher Block Chaining.
Bei diesem Modus fließt das Ergebnis der Verschlüsselung früherer Blöcke in die Verschlüsselung des aktuellen Blockes mit ein. Jeder Block des verschlüsselten Textes hängt also nicht nur vom zugehörigen Klartextblock, sondern auch von allen vorherigen Klartextblöcken ab. Für den ersten Klartextblock wird zusätzlich ein Initialisierungsblock benötigt.
Die Verschlüsselung läuft wie folgt:
Die Entschlüsselung läuft analog ab:
Dieses Verfahren hat allerdings immer noch den Nachteil, dass zwei Nachrichten bis zum ersten Unterschied den gleichen verschlüsselten Text ergeben. Insbesondere liefern also identische Nachrichten den gleichen verschlüsselten Text. Um das zu verhindern, verwendet man sogenannte Initialisierungsvektoren. Der Initialisierungsvektor ist ein Zufallswert, der unverschlüsselt mit der Nachricht übertragen werden kann. Vor der Verschlüsselung (bzw. Entschlüsselung) des ersten Blockes wird dieser Block mit dem Initialisierungsvektor mittels exklusivem Oder verknüpft. Anschließend läuft das Verfahren so ab wie oben beschrieben.
Im ECB-Modus wird jeder Block unabhängig von den anderen Blöcken verschlüsselt.