title: Pseudo-trasformata di Hadamard
text: # Pseudo-trasformata di Hadamard
  
  In crittografia la pseudo-trasformata di Hadamard è una trasformata invertibile operante su stringhe di bit utilizzata per generare diffusione crittografica.
  
  La stringa di bit deve essere di lunghezza pari così che possa essere divisa in 2 stringhe a e b di uguale lunghezza, ognuna composta da n bit. Per calcolare la trasformata ed ottenere a' e b', si usano le seguenti equazioni:
  
      $a'=a+b\,{\pmod {2^{n}}}$
      $b'=a+2b\,{\pmod {2^{n}}}$
  
  L'inverso della trasformata si ottiene con le seguenti equazioni:
  
      $b=b'-a'\,{\pmod {2^{n}}}$
      $a=2a'-b'\,{\pmod {2^{n}}}$
  
  ## Generalizzazione
  
  Le soprastanti equazioni possono essere espresse anche in algebra matriciale considerando a e b come due elementi di un vettore e la trasformata come la moltiplicazione di una matrice:
  
      $H_{1}={\begin{bmatrix}2&1\\1&1\end{bmatrix}}$
  
  L'inverso della trasformata può essere derivato invertendo la matrice. Ovviamente la matrice può essere generalizzata astraendola a dimensioni maggiori, permettendo a vettori di qualunque dimensione in base potenza di due di essere trasformati utilizzando la seguente regola ricorsiva:
  
      $H_{n}={\begin{bmatrix}2\times H_{n-1}&H_{n-1}\\H_{n-1}&H_{n-1}\end{bmatrix}}$
  
  Ad esempio:
  
      $H_{2}={\begin{bmatrix}4&2&2&1\\2&2&1&1\\2&1&2&1\\1&1&1&1\end{bmatrix}}$
  