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