XOR (wykluczające LUB) – to prosta, ale użyteczna operacja logiczna, która jest stosowana w programowaniu, kryptografii i przetwarzaniu danych. Działa na zasadzie: jeśli dwa wartości są takie same, wynik będzie
0, jeśli różne –
1.
Jak XOR wygląda w praktyce?
Wyobraźmy sobie, że macie dwa przełączniki:
- Jeśli oba wyłączone – światło nie świeci.
- Jeśli oba włączone – też nie świeci.
- Ale jeśli jeden włączony, a drugi wyłączony – światło się zapala.
Tak działa XOR: jeśli elementy są różne – wynik to
1, jeśli takie same –
0.
Gdzie stosuje się XOR?
Szyfrowanie – jeśli weźmiemy tekst i zrobimy XOR z kluczem, otrzymamy zaszyfrowaną wersję. Powtórny XOR tym samym kluczem zwróci oryginalny tekst.
Zmiana bitów – XOR pomaga w przełączaniu poszczególnych bitów w liczbach.
Sprawdzanie różnic – używane w algorytmach porównywania dwóch zbiorów danych.
Prosto mówiąc, XOR to jak zasada "tylko jedno z dwóch", która pomaga w wielu zadaniach związanych z przetwarzaniem informacji. Rozważmy prosty przykład napisany w Ruby (ruby 3.4.2)
Przykład XOR (Ruby)
def xor_encrypt(text, key)
text.bytes.map.with_index { |char, i| char ^ key.bytes[i % key.size] }.pack('C*')
end
def xor_decrypt(encrypted_text, key)
xor_encrypt(encrypted_text, key)
end
text = "Hello, XOR!"
key = "key123"
encrypted = xor_encrypt(text, key)
puts "🔒 Zaszyfrowano: #{encrypted.inspect}"
decrypted = xor_decrypt(encrypted, key)
puts "🔓 Odszyfrowano: #{decrypted}"
W terminalu wydrukuje mniej więcej tak:
...
🔒 Zaszyfrowano: "#\x00\x15]]\x1FK=6c\x13"
...
🔓 Odszyfrowano: Hello, XOR!
Tu każdy znak tekstu jest łączony z kluczem przez XOR.
Ponowna operacja tym samym kluczem zwraca początkowy tekst.
To jeden z najprostszych sposobów szyfrowania, który jest używany w wielu algorytmach.