Strona główna » Algorytmy » Artykuły » XOR i szyfrowanie

XOR i szyfrowanie

Wstęp

Często chcemy zaszyfrować na szybko dokument, ale nie mam pod ręką akurat żadnego programu. Czasem nie potrzebujemy używać RSA lub SHA-512. Wtedy można użyć funkcji XOR, która umożliwia szybką implementację "szyfrowania".

Uwaga: Choć na zwykłej kartce papieru złamanie tego szyfru może zająć trochę czasu nie oznacza, że jest silny. Jego zabezpieczenia są porównywalna do klasycznych szyfrów polialfabetycznych. Algorytm ten nie powinien być używany do szyfrowania wrażliwych dokumentów.

Implementacja

Szyfrowanie i deszyfrowanie

Szyfrowanie przy pomocy funkcji XOR polega na szyfrowaniu i-tego znaku tekstu przy pomocy i-tego znaku hasła. W przypadku, gdy hasło jest krótsze niż szyfrowany tekst to dopisuje się do hasła hasło tak długo, aż jego długość jest niemniejsza niż tekstu.

  1. string cipher(string word, string password){
  2.   for(int i = 0; i < word.size(); i++){
  3.     word[i] ^= password[i % password.size()];
  4.     word[i] |= password[( i +1) % password.size()];
  5.   }
  6.   return word;
  7. }

Algorytm jest bardzo prosty. Iteracyjnie każdą literkę szyfrujemy przy użyciu kolejnego znaku z hasła. Funkcja modulo dba, aby po przekroczeniu długości hasła, program zaczął pobierać hasło od początku, aż do zakończenia iteracji.

Zaletą tego rozwiązania jest bardzo szybka i prosta implementacja. Warto zauważyć, że zaszyfrowany tekst możemy odszyfrować przy pomocy.. ponownego szyfrowania.

Testowanie programu

Poniższa funkcja main() wczytuje od użytkownika tekst do zaszyfrowania oraz hasło, a następnie wypisuje na ekran zaszyfrowany tekst.

  1. int main(){
  2.   string word, password;
  3.   cin >> word >> password;
  4.   cout << cipher(word, password);
  5.   system("pause");
  6.   return 0;
  7. }