Encriptare simpla folosind XOR
1Encriptarea XOR
Encriptare XOR este folosita in aplicațiile in care securitate nu trebuie neaparat sa fie un punct forte, insa este necesara pentru a obstrucționa datele si a le face inaccesibile utilizatorului de rand. Mesajul encriptat folosind SAU-ul EXCLUSIV ( XOR ) este aproape imposibil de spart folosind metoda brute force, insa aceasta este vulnerabila la pattern-uri ( in cazul in care cheia este mai mica decat mesajul ).
Cum functioneaza ?
Encriptarea funcționeaza prin aplicarea operatorului SAU-Exclusiv ( ^ ) fiecarui caracter din sir, astfel schimbandu-i valoarea. Pentru a decripta mesajul este necesara reaplicarea cheii astfel rezultand mesajul original.
* A ^ 0 = A
* A ^ A = 0
* (B ^ A) ^ A = B ^ 0 = B
Implementare
Mai jos puteți vedea o implementare in 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 in 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 necesitand doar cateva linii de cod
- Mesajul este extrem de bine protejat daca lungimea mesajului <= lungimea cheii
Articolul original il puteti gasi aici.
Daca acest articol contine o greseala, selecteaza cuvintele sau fraza gresita si tasteaza combinatia de taste Shift + Enter sau apasa click aici pentru a o raporta. Multumim!
Da, imi place. Se mai poate face resetand pozitia la 0 atunci cand lungimea cheii e mai mare decat lungimea textului, un simplu if.