🎩 Цыганские фокусы программистов, выпуск пятый.
Побитовое исключающее ИЛИ можно использовать для шифрования данных.
Так как двойное применение XOR с тем же аргументом, даёт на выходе исходное число.
Простыми словами, верна формула a ^ b ^ b == a
.
Таким образом, при условии, что key = 100500
, а data = 10
.
Мы получаем шифровку так data ^ key = 100510
.
Отправляем эту шифровку куда надо, и для расшифровки делаем так 100510 ^ key = 10
.
При этом, конечно же, key
должен остаться неизвестным в процессе транспортировки шифровки или ее генерации.
И следует учесть, что в том же JavaScript побитовые операторы работают с 32 битными числами и это накладывает свои ограничения.
Ну а сама шифровка хоть и очень простая и поддается алгоритмам дешифровки, но всё же в некоторых случаях может быть полезна.
Так что если хотите понтонуться в коде, - юзайте такие цыганские фокусы 🔥