Я услышал о людях стартовое шифрование и думал, что это может быть что-то, что я хотел бы, таким образом, я проверил XOR и не могу иметь никакого смысла его. Таким образом, кто-то может объяснить мне, каков XOR?
XOR - логическая операция, выраженная эксклюзивно или . Она может быть использована для простого и быстрого шифрования сообщений. Таблицу правды для этой операции можно посмотреть здесь: http://mathworld.wolfram.com/XOR.html
quasi-pseudo code implementation (via http://www.evanfosmark.com/2008/06/xor-encryption-with-python/):
#!/usr/bin/env python
from itertools import izip, cycle
def xor_crypt_string(data, key):
return ''.join(chr(ord(x) ^ ord(y)) for (x,y) in izip(data, cycle(key)))
my_data = "Hello. This is a secret message! How fun."
my_key= "firefly"
# Do the actual encryption
encrypted = xor_crypt_string(my_data, key=my_key)
print encrypted
print '---->'
# This will obtain the original data from the encrypted
original = xor_crypt_string(encrypted, key=my_key)
print original
Output:
. BY2F
FRR
DF$IB
---->
Hello. This is a secret message! How fun.
Следует отметить, что данный метод шифрования вряд ли можно считать безопасным. Если вы зашифруете любой общий файл (PNG, JPG и т. Д.), Заголовок которого хорошо известен, ключ можно легко получить из зашифрованного содержимого и известного заголовка.
На простейшем уровне обратимые операции, такие как XOR (произносится как «исключающее ИЛИ»), составляют основу большинства криптографий .
XOR действует как тумблер, с помощью которого вы можете включать и выключать определенные биты. Если вы хотите «зашифровать» число (набор битов), вы можете выполнить XOR с «секретным» числом. Если вы возьмете это зашифрованное число и снова выполните XOR с тем же секретным номером , вы получите свой исходный номер .
Encrypt a number (210) with a secret "key" (145). 210 XOR 145 gives you 65 ←-- your "scrambled" result |+ now unscramble it +| ↓ 65 XOR 145 gives you 210 ←-- and back to your original number
Это очень пример. Когда вы шифруете последовательность чисел (или текст, или любую комбинацию битов) с помощью XOR, вы получаете очень простой алгоритм шифрования .
XOR - сокращение от "эксклюзивный или". XOR B верен, если A верен, или B верен, но не верен, если верны и A, и B.
Он используется для криптографии, потому что XOR B XOR A равен B - так что если вы можете использовать A в качестве ключа как для шифрования, так и для расшифровки.
Шифрование XOR также может использоваться в цепочке блоков шифрования . XOR CBC используется как дополнение ко многим реализациям шифрования. Существует проект кода Google, который использует это само по себе, хотя сам по себе XOR не очень безопасен: http://code.google.com/p/xorencryption/
вы берете ключ, например 0101, затем используете его для XOR вашей строки (в двоичном формате), чтобы получить зашифрованную строку.
0101 XOR <-- key
1011 <---- original message
----
1110 <-- send message
Вы посылаете 1110 вашему получателю. Этот получатель, затем берет полученную строку и XOR записывает ее с ключом для получения исходного сообщения:
1110 XOR <--- received message
0101 <-- key
----
1011 <--- original message
XOR, или "эксклюзивный или" - это логическая операция 2 операндов, определяемая как:
(a and b) or (not a and not b)
a b result
0 0 0
1 0 1
0 1 1
1 1 0
Критической особенностью XOR по отношению к шифрованию является его обратимость, т.е. где C = A XOR B, то вы можете получить обратно A, используя A = C XOR B.
Таким образом, для потока чистого текста A и ключа той же длины B, вы можете сгенерировать криптотекст C, и отправить его получателю.
Получатель, у которого в сейфе есть копия B, может сделать C XOR B и регенерировать A.
.