Cała oryginalna treść jest tworzona po ukraińsku. Nie wszystkie treści zostały jeszcze przetłumaczone. Niektóre posty mogą być dostępne tylko po ukraińsku.Dowiedz się więcej

Co to jest XOR i jak to działa?

Okładka posta: Co to jest XOR i jak to działa?
Spis treściKliknij link, aby przejść do wybranego miejsca
Ta treść została automatycznie przetłumaczona z ukraińskiego.
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.

Ten post nie ma jeszcze żadnych dodatków od autora.

6 lut 15:31

Poprawka błędu [DEPRECATION] #adapters jest przestarzałe. Użyj zamiast tego #profiles. (Codecov / docile)

meme code
meme code@memecode
Czym jest Promise w JavaScript i jak szybko zrozumieć jego istotę?
18 lut 11:01

Czym jest Promise w JavaScript i jak szybko zrozumieć jego istotę?

meme code
meme code@memecode
Struktura Promise (JavaScript) i jak z tym pracować
18 lut 14:33

Struktura Promise (JavaScript) i jak z tym pracować

meme code
meme code@memecode
Czym jest memoizacja (przykłady Ruby i Ruby on Rails)?
20 lut 18:16

Czym jest memoizacja (przykłady Ruby i Ruby on Rails)?

meme code
meme code@memecode
Czym jest debounce w JavaScript i dlaczego jest to ważne?
21 mar 16:39

Czym jest debounce w JavaScript i dlaczego jest to ważne?

meme code
meme code@memecode
Co to jest CFB (Cipher Feedback)?
21 mar 16:53

Co to jest CFB (Cipher Feedback)?

meme code
meme code@memecode
Programowanie wbudowane: co to jest i od czego zacząć
24 mar 16:48

Programowanie wbudowane: co to jest i od czego zacząć

meme code
meme code@memecode
Pessimistic Lock w Rails: co to jest i kiedy stosować. Jakie są alternatywy?
31 mar 17:45

Pessimistic Lock w Rails: co to jest i kiedy stosować. Jakie są alternatywy?

meme code
meme code@memecode
Dlaczego PostgreSQL pomija ID podczas zapisywania nowych rekordów? (Heroku)
31 mar 19:13

Dlaczego PostgreSQL pomija ID podczas zapisywania nowych rekordów? (Heroku)

meme code
meme code@memecode
[Codecov] Jaka jest różnica między pokryciem patch a pokryciem projektu?
9 kwi 16:03

[Codecov] Jaka jest różnica między pokryciem patch a pokryciem projektu?

meme code
meme code@memecode
Jak kursy Scratch pomagają dzieciom rozwijać umiejętności miękkie?
11 kwi 18:24

Jak kursy Scratch pomagają dzieciom rozwijać umiejętności miękkie?

meme code
meme code@memecode
24 kwi 20:17

Naprawiamy minikube "Próbujesz uruchomić binarkę amd64 na systemie M1."

meme code
meme code@memecode