Anche in questa modalità si utilizza un vettore di inizializzazione IV (stringa iniziale di 64 bit). Essa presenta come primo passo la costruzione di una sequenza: z0z1z2z3... dove z0 = IV e zi = DESk(zi-1) con chiave k segreta. Come si può notare tale stringa è completamente indipendente dal messaggio in chiaro, ed inoltre essa è utilizzata come uno one-time-pad. Sia x1x2 ... xn il messaggio in chiaro; il messaggio cifrato è definito da y1y2 ... yn dove:
yi = xiÅzi (*)
Per la fase di decifratura si calcola la sequenza z0z1z2... allo stesso modo del caso della cifratura. Quindi i blocchi del messaggio in chiaro sono definiti da:
xi = yiÅzi
Anche per tale metodo c'è la variante a j bit, in particolare per la cifratura abbiamo lo schema in Figura 4.4.1.
Questo schema è analogo a quello definito per il CFB, l'unica diversità sta nel fatto che il feed-back (cioè il riutilizzo di una certa parte dell'informazione) non riguarda j bit del testo cifrato, ma i j bit più a sinistra della stringa in output prodotta dal DES.
Si può notare che la parte superiore dello schema di cifratura è completamente indipendente dai bit del messaggio in chiaro, ed inoltre per j = 64 otteniamo lo schema generale per la cifratura, descritto precedentemente nella (*). Infatti considerando inizialmente il valore z0 = IV, ed applicando ad esso l'algoritmo DESk, ottengo i 64 bit che costituiscono z1, quindi considerando tale stringa come input al DES ottengo la stringa z2, così proseguendo definisco la sequenza di chiavi z0z1z2... .
Queste chiavi verranno poi utilizzate per effettuare lo xor bit a bit con le stringhe xi del messaggio in chiaro. La decifratura ha come schema quello in Figura 4.4.2.
Come si può notare, la prima parte di esso è uguale a quella che viene utilizzata per effettuare la cifratura (ciò è valido dal momento che la sequenza del messaggio in chiaro generata da questa prima parte è indipendente dal messaggio in chiaro, così come dal messaggio cifrato).
Quindi, ad ogni passo si considerano i j bit più a sinistra delle stringhe fornite in output dall'algoritmo DES, e si effettua lo xor bit a bit con j bit del messaggio cifrato, ottenendo così j bit del messaggio in chiaro.
Tale metodo ha il vantaggio che la sequenza z0z1z2... può essere computata indipendentemente dal messaggio in chiaro, e quindi può essere precalcolata (sfruttando per esempio dei tempi in cui la macchina è inattiva), in modo tale che quando viene immesso il messaggio da cifrare, la cifratura può essere eseguita immediatamente: yi = xi Å zi (lo stesso vale per la decifratura). Quindi in realtà le operazioni di cifratura/decifratura vere e proprie consisteranno semplicemente di operazioni di xor che come sappiamo sono estremamente veloci da realizzare.
Lo svantaggio rispetto al metodo precedente è dovuto al fatto che il cambiamento di un bit nel messaggio originario provoca il cambiamento di un solo bit nel testo cifrato e viceversa, e tutti gli altri bit che precedono e seguono questi rimangono inalterati.
In definitiva possiamo dire che per tale modalità non c'è dipendenza tra i vari blocchi del messaggio cifrato, e questo porta ai problemi già visti in precedenza.