Ако виждаш това съобщение, значи уебсайтът ни има проблем със зареждането на външни ресурси.

If you're behind a web filter, please make sure that the domains *.kastatic.org and *.kasandbox.org are unblocked.

Основно съдържание

XOR побитови операции

Основният шифър с изместване

Ако гледа урока за шифър с еднократен код, знаеш, че това е най-добрият шифър с отместване. Той се осъществява чрез прилагането на последователност от случайни замествания с дължина равна на дължината на съобщението. Важно е да разбереш точно как и защо този шифър е непробиваем или съвършено таен.
За да разберем защо, първо трябва да въведем побитовите операции AND (и), OR (или) и XOR (изключващо или). И най-вече, трябва да разберем защо XOR трябва да се използва, когато се използва шифър с еднократен код на компютри. Побитово просто означава, че работим с отделни битове или двоични числа. Във всяка съвременна компютъризирана схема за критиране ние представяме символите с помощта на двоични цифри. Ако не си спомняш защо, може да видиш клипа за компютърната памет

Криптиране на цветове

Да започнем с визуален пример като криптираме цвета на зеленото листо от картинката на Khan Academy.
Как можем да превърнем цвят в число? Ами, в момента виждаш HTML цветове, дефинирани с помощта на RGB цветови модел. Това е адитивен модел, който се основава на смесването на определени количества червена (R), зелена (G) и синя (B) светлина.
Можем да определим точно колко е RED (ЧЕРВЕНОТО), GREEN (ЗЕЛЕНОТО) и BLUE (СИНЬОТО), като използваме числата 0 до 255. Черното означава, че всички цветове са изключени (0;0;0), докато бялото значи, че всички цветове са включени (255;255;255). Между тях има 16 милиона възможни цветове (256 * 256 * 256). Сега нека определим зеленото в логото на Кан Академия, с помощта на произволна онлайн програма за редактиране на изображения:
Забележи, че то се съхранява като Червено (R) = 156, Зелено (G) = 181 и Синьо (B) = 58.
Ако изразим числата двоично, получаваме:
Червено=10011100, Зелено=10110101, Синьо=00111010.
Можем да ги представим заедно така: 100111001011010100111010
Двоичното представяне на зеленото на Кан Академия е:

Приложение на случайните измествания

Сега да предположим, че генерираш редица от измествания, като хвърляш монета, и представяш резултатите (Ези/Тура) в двоичен вид:
ЕTЕTTЕTЕЕЕЕTTЕTTTTЕTTЕЕЕ = 010110100001101111011000
Да помислим как можем да приложим тази редица от измествания към нашия цвят така, че да го криптираме чрез шифър с еднократен код.
100111001011010100111010 + 010110100001101111011000 = ?
За да извършим кодирането с еднократен случаен ключ, е нужно да изберем правилната операция, така че получената последователност да може да е който и да е цвят с еднаква вероятност. Нека да разгледаме различните операции: AND, OR, XOR.

Логическо и (AND)

Операторът AND е познат още като логическа конюнкция и работи като умножение. 
Резултатът му е 1 тогава и само тогава, когато всички негови аргументи са 1. Ето неговата таблица на истинност:
0 AND 0 = 0
0 AND 10
1 AND 0 = 0
1 AND 1 = 1
Нека опитаме:
100111001011010100111010 AND 010110100001101111011000 = 000110000001000100011000
Полученият цвят е много тъмно лилаво. Забележи, че когато прилагаме операцията AND над някакво двоично число, резултът не може да е по-голям от него. В нашия пример за цвят тази операция премахва много възможни нюанси и затъмнява цвета към черно.

Логическо или (OR)

Операторът ОR е познат още като логическа дизюнкция. При нея се получава 1, когато един или повече от аргументите ѝ са 1. Ето нейната таблица на истинност:
0 OR 0 = 0
0 OR 1 = 1
1 OR 0 = 1
1 OR 1 = 1
Нека опитаме:
100111001011010100111010 OR 010110100001101111011000 = 110111101011111111111010
Резултатът е светло лилаво. Забележи, че когато прилагаме операцията ОR над двоична последователност, получената последователност не може да е по-малка. Това премахва много от възможностите, тъй като измества цвета към бялото.

Изключващо или (XOR)

Операцията XOR дава резултат 1, когато аргументите не си съответстват, което се получава, когато единият от двата е единствената истина. Това е същото като събиране по модул 2. Ето неговата таблица на истинност:
0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0
Нека опитаме:
100111001011010100111010 XOR 010110100001101111011000 = 110001101010111011100010
Резултатът е малко по-тъмно лилаво в сравнение с използването на операцията OR. Забележи, че, когато използваме операцията XOR над двоична последователност, получената последователност може да бъде всяка възможна последователност. Ако вземем някакъв криптиран цвят, всичко което знаем е, че първоначалният цвят “е еднакво вероятно да бъде всеки цвят”. Нямаме никаква информация, която може да е по-добра от сляпо отгатване (1/16 милиона).
Накрая да направим нагледна демонстрация, така че да можеш да видиш шифъра с еднократен код в действие. След това може да спечелим още точки енергия!

Искаш ли да се присъединиш към разговора?

Разбираш ли английски? Натисни тук, за да видиш още дискусии в английския сайт на Кан Академия.