Encriptare simpla folosind XOR

Adaugat de Andrey pe 07 February, 2010 in Algoritmica - Articole - PHP / 1 Comentariu / 368 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.

Articole asemanatoare:

  1. [ONI][IX]Criptare
  2. Şiruri de caractere [C]
  3. Variabile, constante si expresii in C++/Pascal[1]
  4. Siruri de caractere si lucrul cu acestea in C/C++
  5. Simuland Evenimente in PHP

iGrabFrom.net - Social network image grabber

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