Что такое Шифрование XOR?

Я услышал о людях стартовое шифрование и думал, что это может быть что-то, что я хотел бы, таким образом, я проверил XOR и не могу иметь никакого смысла его. Таким образом, кто-то может объяснить мне, каков XOR?

15
задан Community 25 July 2013 в 14:52
поделиться

7 ответов

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.
6
ответ дан 1 December 2019 в 00:23
поделиться

Следует отметить, что данный метод шифрования вряд ли можно считать безопасным. Если вы зашифруете любой общий файл (PNG, JPG и т. Д.), Заголовок которого хорошо известен, ключ можно легко получить из зашифрованного содержимого и известного заголовка.

1
ответ дан 1 December 2019 в 00:23
поделиться

На простейшем уровне обратимые операции, такие как 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, вы получаете очень простой алгоритм шифрования .

2
ответ дан 1 December 2019 в 00:23
поделиться

XOR - сокращение от "эксклюзивный или". XOR B верен, если A верен, или B верен, но не верен, если верны и A, и B.

Он используется для криптографии, потому что XOR B XOR A равен B - так что если вы можете использовать A в качестве ключа как для шифрования, так и для расшифровки.

1
ответ дан 1 December 2019 в 00:23
поделиться

Шифрование XOR также может использоваться в цепочке блоков шифрования . XOR CBC используется как дополнение ко многим реализациям шифрования. Существует проект кода Google, который использует это само по себе, хотя сам по себе XOR не очень безопасен: http://code.google.com/p/xorencryption/

0
ответ дан 1 December 2019 в 00:23
поделиться

вы берете ключ, например 0101, затем используете его для XOR вашей строки (в двоичном формате), чтобы получить зашифрованную строку.

0101 XOR <-- key
1011 <---- original message
----
1110 <-- send message

Вы посылаете 1110 вашему получателю. Этот получатель, затем берет полученную строку и XOR записывает ее с ключом для получения исходного сообщения:

1110 XOR <--- received message
0101 <-- key
----
1011 <--- original message
26
ответ дан 1 December 2019 в 00:23
поделиться

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.

.
11
ответ дан 1 December 2019 в 00:23
поделиться