Il codice simmetrico DES si basa su una rete Feistel operante ripetuta su metà a 32 bit del blocco a 64 bit. L'uso di Feistel significa che la funzione "mangler" utilizzata non ha bisogno di essere invertibile.
La funzione "mangler" opera espandendo una parola da 32 bit a 48 bit tramite un semplice algoritmo. Questo 48 bit è combinato con una chiave e poi riconvertito a 32 bit tramite S-box. Gli S-box ovviamente non sono invertibili, perché prendono un ingresso a 6 bit e producono un output a 4 bit.
Ma l'intera costruzione è invertibile. Supponendo che la chiave sia fissa, ogni ingresso a 32 bit della funzione "mangler" viene mappato su una distinta uscita a 32 bit? Oppure alcune uscite a 32 bit non vengono mai prodotte dalla funzione mangler e quindi non sono invertibili?