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


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

8 14

8 ответов:

XOR-это логическая операция, произносимая какexclusive или . Его можно использовать для быстрого и простого шифрования сообщений. Вы можете увидеть таблицу истинности для этой операции здесь: 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.

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

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

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

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

Исключающее ИЛИ исключающее или-это 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.

На простейшем уровне обратимые операции, такие как 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 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 B истинно, если a истинно, или если B истинно, но не если оба A и B истинны.

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

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

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