Encriptare simpla folosind XOR

07 Februarie, 2010 la 10:28 819 afisari

Etichete : , , , , , , , ,

Encriptarea XOR

Encriptare XOR este folosita în aplicațiile în care securitate nu trebuie neapărat sa fie un punct forte, însă este necesara pentru a obstrucționa datele și a le face inaccesibile utilizatorului de rând. Mesajul encriptat folosind SAU-ul EXCLUSIV ( XOR ) este aproape imposibil de spart folosind metoda brute force, însa aceasta este vulnerabila la pattern-uri ( în cazul în care cheia este mai mica decat mesajul ).

 

 

Cum functioneaza ?

Encriptarea funcționează prin aplicarea operatorului SAU-Exclusiv ( ^ ) fiecărui caracter din sir, astfel schimbându-i valoarea. Pentru a decripta mesajul este necesara reaplicarea cheii astfel rezultând mesajul original.

* A ^ 0 = A
* A ^ A = 0
* (B ^ A) ^ A = B ^ 0 = B

Implementare

Mai jos puteți vedea o implementare în c++

void encrypt(char string[], char key[])
{
 int string_len = strlen(string);
 int key_length = strlen(key);

 int i,position;

 for(i = 0; i < string_len; i++)
 {
 position = i % key_length;
 string[i] = (char)((int)string[i] ^ (int)key[position]);
 }
}

Și de asemenea o implementare în php plus exemplu de folosire

function encryption($string, $key)
{
 $string_len = strlen($string);
 $key_length = strlen($key);

 for( $i = 0; $i < $string_len; $i++)
 {
 $position = $i % $key_length;
 $replace = ord($string[$i]) ^ ord($key[$position]);

 $string[$i] = chr($replace);
 }

 return $string;
}

//Cum folosim aceasta funcție ?

//encriptare
$mesaj = base64_encrypt(encryption($mesaj, “1qazxsw2″));
echo $password; // mesaj encriptata

//decryption
$mesaj = encryption(base64_decrypt($mesaj), “1qazxsw2″));
echo $mesaj; // mesaj original

Observati ca pentru a encripta si decripta mesajul ne folosim si de functia base64_encrypt/decrypt, aceasta este doar pentru a preveni afisarea caracterelor neprintabile.

Avantaje

  • Simplu de implementat necesitând doar câteva linii de cod
  • Mesajul este extrem de bine protejat dacă lungimea mesajului <= lungimea cheii

 

Articolul original il puteti gasi aici.

Recomandam, pe aceeasi tema

Articole - C/C++ - PHP1 Comentariu
Gaming Arena - blog de gaming

Comentarii la "Encriptare simpla folosind XOR"

  1. Nytro says:

    Da, imi place. Se mai poate face resetand pozitia la 0 atunci cand lungimea cheii e mai mare decat lungimea textului, un simplu if.

Lasa un comentariu