All original content is created in Ukrainian. Not all content has been translated yet. Some posts may only be available in Ukrainian.Learn more

Що таке XOR і як він працює?

Post cover: Що таке XOR і як він працює?
This content has not been translated yet.We're showing the original Ukrainian content below.
XOR (виключне АБО) – це проста, але корисна логічна операція, яка використовується у програмуванні, криптографії та обробці даних. Вона працює за правилом: якщо два значення однакові, результат буде 0, якщо різні – 1.

Як XOR виглядає на практиці?

Уявімо, що у вас є два вимикачі:
  • Якщо обидва вимкнені – світло не горить.
  • Якщо обидва увімкнені – теж не горить.
  • Але якщо один увімкнено, а інший вимкнено – світло загоряється.
Ось так і працює XOR: якщо елементи різні – виходить 1, якщо однакові – 0.

Де використовується XOR?

Шифрування – якщо взяти текст і зробити XOR з ключем, отримаємо зашифрований варіант. Повторний XOR тим же ключем поверне вихідний текст.
Зміна бітів – XOR допомагає в перемиканні окремих бітів у числах.
Перевірка відмінностей – використовується в алгоритмах порівняння двох наборів даних.
Простими словами, XOR – це як правило "тільки одне з двох", що допомагає у багатьох задачах з обробкою інформації. Розглянемо простий приклад написаний на Ruby (ruby 3.4.2)

Приклад 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 "🔒 Зашифровано: #{encrypted.inspect}"

decrypted = xor_decrypt(encrypted, key)
puts "🔓 Розшифровано: #{decrypted}"
В терміналі надрукує прибризно таке:
...
🔒 Зашифровано: "#\x00\x15]]\x1FK=6c\x13"
...
🔓 Розшифровано: Hello, XOR!
Тут кожен символ тексту комбінується з ключем через XOR.
Повторна операція з тим самим ключем повертає початковий текст.
Це один із найпростіших способів шифрування, який використовується в багатьох алгоритмах.

This post doesn't have any additions from the author yet.

06 Feb 15:31

Фікс помилки [DEPRECATION] #adapters is deprecated. Use #profiles instead. (Codecov / docile)

meme code
meme code@memecode
Що таке Promise у JavaScript і як швидко зрозуміти суть?
18 Feb 11:01

Що таке Promise у JavaScript і як швидко зрозуміти суть?

meme code
meme code@memecode
Структура Promise (JavaScript) та як з цим працювати
18 Feb 14:33

Структура Promise (JavaScript) та як з цим працювати

meme code
meme code@memecode
Що таке Memoization (приклади Ruby та Ruby on Rails)?
20 Feb 18:16

Що таке Memoization (приклади Ruby та Ruby on Rails)?

meme code
meme code@memecode
Що таке debounce у JavaScript і чому це важливо?
21 Mar 16:39

Що таке debounce у JavaScript і чому це важливо?

meme code
meme code@memecode
What is CFB (Cipher Feedback)?
21 Mar 16:53

What is CFB (Cipher Feedback)?

meme code
meme code@memecode
Embed програмування: що це таке і з чого почати
24 Mar 16:48

Embed програмування: що це таке і з чого почати

meme code
meme code@memecode
Pessimistic Lock у Rails: що це таке і коли застосовувати. Які є альтернативи?
31 Mar 17:45

Pessimistic Lock у Rails: що це таке і коли застосовувати. Які є альтернативи?

meme code
meme code@memecode
Why does PostgreSQL skip ID when saving new records? (Heroku)
31 Mar 19:13

Why does PostgreSQL skip ID when saving new records? (Heroku)

meme code
meme code@memecode
[Codecov] What is the difference between patch and project coverage?
09 Apr 16:03

[Codecov] What is the difference between patch and project coverage?

meme code
meme code@memecode
How do Scratch courses help children develop soft skills?
11 Apr 18:24

How do Scratch courses help children develop soft skills?

meme code
meme code@memecode
24 Apr 20:17

Фіксимо minikube "You are trying to run the amd64 binary on an M1 system."

meme code
meme code@memecode