Что такое шифрование XOR? - PullRequest
14 голосов
/ 08 января 2010

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

Ответы [ 8 ]

25 голосов
/ 08 января 2010

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

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

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

1110 XOR <--- received message
0101 <-- key
----
1011 <--- original message
11 голосов
/ 08 января 2010

XOR, или «исключающий или» - это логическая операция с двумя операндами, определенная как:

(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.

6 голосов
/ 08 января 2010

XOR - это логическая операция, произносится исключительно или . Он может быть использован для простого и быстрого шифрования сообщений. Вы можете увидеть таблицу истинности для этой операции здесь: http://mathworld.wolfram.com/XOR.html

Реализация квази-псевдокода (через 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

Выход:

.     BY2F
FRR
DF$IB
---->
Hello. This is a secret message! How fun.
2 голосов
/ 19 октября 2013

Я написал блог о шифровании XOR http://programmingconsole.blogspot.in/2013/10/xor-encryption-for-alphabets.html

Математически, XOR шифрование / шифр - это аддитивный шифр, алгоритм шифрования, который работает в соответствии со следующими принципами:

(A * B) + (!A * !B)

 A  B  A XOR B
 0  0     0
 1  0     1
 0  1     1
 1  1     0

Оператор xor аналогичен оператору AND (*) и OR (+) Для расшифровки шифра нам просто нужно XOR шифра с ключом, чтобы восстановить исходный текст. Оператор XOR является чрезвычайно распространенным компонентом в сложных алгоритмах шифрования. Такое шифрование может быть легко взломано с помощью постоянного повторяющегося ключа и частотного анализа. Но мы меняем ключ после каждого шифрования, так как шифрование очень сложно в вычислительном отношении. такой шифр называется потоковым шифром, в котором каждый следующий бит шифруется с использованием другого псевдослучайного ключа, такой тип шифрования использовался немцами в их шифре Лоренца.

Используя действительно случайный * поток ключей, шифр теоретически не может быть взломан и, следовательно, непригоден для использования

Я бы порекомендовал вам посмотреть

BBC: взломщики кодов Документальные фильмы о Блетчли Паркс потеряли героев

Это даст вам реальное представление о мире криптографии и зашифрованных битов. Насколько важна криптография? Ну, это было причиной изобретения компьютеров.

2 голосов
/ 08 января 2010

На простейшем уровне обратимые операции, такие как XOR (произносится как «исключающее ИЛИ»), составляют основу большинства криптографий .

XOR действует как тумблер, где вы можете включать и выключать определенные биты. Если вы хотите «скремблировать» число (последовательность битов), вы XOR его с «секретным» числом. Если вы возьмете этот зашифрованный номер и снова XOR его с тем же секретным номером , вы вернете свой исходный номер .

<i>Encrypt a number (210) with a secret "key" (145).</i>

                  210 <b>XOR 145</b> <sub>gives you</sub> 65   &larr;-- <i>your "scrambled" result</i>
                                      |
                  <s>+   <sup>now unscramble it</sup>   +</s>
                  |
                  &darr;
                  65  <b>XOR 145</b> <sub>gives you</sub> 210  &larr;-- <i>and back to your original number</i>

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

1 голос
/ 08 января 2010

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

1 голос
/ 08 января 2010

XOR - это сокращение от «эксклюзив или». XOR B является истинным, если A является истинным, или если B является истинным, но не если и A, и B истинны.

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

0 голосов
/ 08 января 2010

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

...