Non è proprio la ridondanza di ASCII, ma la ridondanza di ciò che è codificato con ASCII. Vale a dire, si usa ASCII perché si codificano sequenze di caratteri e si usano caratteri perché si desidera che i dati siano percepibili da occhi e cervelli umani. Quindi i dati sono testo o qualcosa di abbastanza vicino (ad es. XML). Alcuni personaggi saranno più comuni di altri. Verranno utilizzati alcuni modelli.
L'idea di un pad monouso riutilizzato è che trasporta informazioni da un testo in chiaro all'altro: se conosci "A xor P" e "B xor P" (A e B sono i byte in chiaro, P pad), quindi è possibile calcolare 'A xor B' confrontando i due valori. Quindi ogni bit di informazione che apprendi su A produce le informazioni corrispondenti su B. Ad esempio, se A è un testo XML e hai già accertato che alcuni byte di testo normale sono " <config
", allora puoi intuire che il prossimo byte di A sarà probabilmente un " >
", uno spazio o un " u
". Questi sono tre possibili byte di testo in chiaro, da cui è possibile dedurre immediatamente gli unici tre byte di testo in chiaro nella stessa posizione per B. A seconda di ciò che si sa di B, è possibile eliminare i valori che "non hanno senso", e quindi conoscere il valore in byte per A, e così via.
Quando rompi il famigerato doppio pad, continui a propagare le informazioni da un testo in chiaro all'altro e viceversa.
ASCII dice già parecchio, perché i valori ASCII validi sono compresi nell'intervallo da 0 a 127, ma nel testo "normale" non apparirà molto: nell'intervallo da 0 a 31, solo 9 (scheda), 10 (lf) e 13 (cr) saranno incontrati nella pratica.