Pseudo -Hadamard Transform ( PHT ) este o transformare reversibilă a șirurilor de biți utilizate în criptografie pentru a oferi difuzie în criptare . Numărul de biți din intrarea conversiei trebuie să fie par, astfel încât să fie posibilă împărțirea șirului în două părți de lungime egală. Creatorul transformării este matematicianul francez Jacques Hadamard .
Fie intrarea transformării un șir de biți de lungime . Să-l reprezentăm ca două șiruri de lungime : . Apoi, ca urmare a acțiunii pseudo-transformării Hadamard, obținem un șir ale cărui valori ale subșirului sunt calculate prin următoarele formule:
În consecință, din aceste formule, se obține ușor pseudo-transforma inversă Hadamard:
Pseudo-transformarea Hadamard poate fi reprezentată sub formă de matrice . Dacă scriem și sub formă vectorială , , atunci transformarea va fi echivalentă cu înmulțirea cu o matrice :
Desigur, nu uitați că toate operațiile la înmulțirea cu o matrice sunt efectuate modulo .
Transformarea inversă este echivalentă cu înmulțirea cu matricea inversă la : .
De asemenea, puteți reprezenta matricea de transformare ca o matrice mai mare care este o putere a doi. Deci, de exemplu, dacă lucrăm cu un șir de 8 biți, îl putem reprezenta ca 4 subșiruri de câte 2 biți fiecare: , și facem același lucru cu șirul de ieșire . Matricea pentru o astfel de transformare se obține din regula recursivă:
În exemplul nostru , , și matricea de transformare arată astfel:
Transformarea pseudo Hadamard este utilizată în unii algoritmi de criptare pentru a oferi o difuzie criptografică mai bună. Twofish și SAFER sunt exemple de astfel de algoritmi . În același timp, o conversie în 2 puncte (la intrare, un șir de 2 octeți) este utilizată în toate variantele de SAFER, cu excepția celei mai recente versiuni a SAFER ++ ( 2000 ), care utilizează o conversie în 4 puncte. (la intrare, un șir de 4 octeți).
În algoritmii de criptare de mai sus, majoritatea operațiunilor, inclusiv pseudo-transformarea Hadamard, sunt efectuate pe octeți . În consecință, în formulele care descriu transformarea, aceasta este luată egală cu 8