Шифроване с афинен шифър с помощта на Python

Sifrovane S Afinen Sif R S Pomosta Na Python



Тема на съдържанието:

  1. Въведение
  2. Предварителни знания
  3. Уравнение на афинния шифър
  4. Шифроване с афинен шифър с помощта на Python
  5. Доказване на концепцията
  6. Заключение
  7. Често задавани въпроси (ЧЗВ)

Афинният шифър представлява специфичен вид заместващ шифър, попадащ в категорията на моноазбучните шифри. За разлика от по-известния шифър на Цезар, който измества всяка буква в обикновен текст с фиксирани три позиции, афинният шифър използва два ключа (a и b). Изборът на ключове трябва да изисква специално внимание.

Предварителни знания

За да разберете дълбоко днешната тема, трябва да разберете следните понятия:







  • Най-големият общ делител (НОД) и взаимно просто число
  • Модулна аритметика

Тези концепции са обяснени подробно в предишната статия, озаглавена „Математически подход на афинния шифър“.



Уравнение на афинния шифър

Нека започнем с формулата за криптиране на афинния шифър:



E(x) = (a.x + b) mod m
Бивш) Означава шифроване на x азбучен индекс
а Индексна стойност на „специалния“ първи ключ
х Индексна стойност на обикновената буква
b Индексна стойност на втория ключ (допълнителна стойност на отместване)
mod m Модулните операции на общия брой на азбуката, който е 26


Алтернативно изображение и надпис : Уравнение на афинния шифър





Например, искаме да шифроваме обикновения текст „BIMANDO“ с 7 и 13 ключа. Използвайки следния индекс на таблицата, първо преобразуваме обикновения текст в съответното му число:


Алтернативно изображение и надпис : Номериране на индекси



Изчистеният текст “BIMANDO” се преобразува в индексиращ номер на “1 8 12 0 13 3 14”.


Алтернативно изображение и надпис : Преобразувайте обикновен текст в индексна номерирана стойност

След това прилагаме изчислението на уравнението и резултатът се показва, както следва:


Алтернативно изображение и надпис : Афинно шифроване

И така, обикновеният текст „BIMANDO“ е криптиран с помощта на афинен шифър с ключове 7 и 13, което води до „URTNAIH“.

Шифроване с афинен шифър с помощта на Python

Сега, да кажем, че искаме да изпратим поверително съобщение, което съдържа куп параграфи. Извършването на криптиране на афинен шифър с ръчния процес отнема много усилия и време и има голям шанс за грешно изчисление, нали? Следователно се нуждаем от програма, която автоматизира процеса на криптиране на Affine Cipher. По-долу е процесът стъпка по стъпка за създаване на програма на Python:

1. Импортирайте необходимите библиотеки
Нашата програма започва с импортиране на необходимите модули като argparse, string и os за разбор на аргументи от командния ред, операции с низове и съответно функционалност, свързана с операционната система.

импортиране argparse
импортиране низ
импортиране Вие

2. Дефиниране на азбучно съпоставяне
След това дефинираме азбуката като низ от малки английски букви. Това се използва за картографиране на знаците по време на процеса на криптиране по-късно.

азбука = низ . ascii_малки букви

3. Функция за криптиране с афинен шифър
Това е основната функция на нашата програма. Той взема въведения текст и два ключа, „a“ и „b“, и прилага криптирането на Affine cipher към текста, като запазва структурата на текста.

деф affine_cipher_encryption ( текст , а , b ) :
шифрован_текст = ''
за въглен в текст:
ако въглен нисък ( ) в азбука:
ако въглен е горен ( ) :
шифрован_текст + = хр ( ( ( а * ( дума ( въглен нисък ( ) ) - 97 ) + б ) % 26 ) + 65 )
друго :
шифрован_текст + = хр ( ( ( а * ( дума ( въглен ) - 97 ) + б ) % 26 ) + 97 )
друго :

4. Условна основна проверка
В този блоков код проверете дали се изпълнява като основна програма. Той настройва анализатора на аргументи с описания за скрипта и неговите аргументи. Необходимият аргумент е само път за въвеждане на текстов файл. Когато не посочим изходния път, искаме той да зададе по подразбиране името на входния файл с добавено към него „_encrypted“. За аргумента „ключове“ искаме да бъде форматиран на „a,b“. Но ако го зададем, по подразбиране е 5 и 8.

ако __име__ == '__основен__' :
анализатор = argparse. ArgumentParser ( описание = „Шифроване с афинен шифър от текстов файл“ )
анализатор . добавяне на аргумент ( 'входен_файл' , помогне = „Път до входния текстов файл“ )
анализатор . добавяне на аргумент ( '-k' , '--ключове' , Тип = ул , по подразбиране = '5,8' , помогне = „Ключове за афинния шифър във формат „a,b““ )
аргументи = анализатор . parse_args ( )

а , b = карта ( вътр , аргументи. ключове . разделяне ( ',' ) )

с отворен ( аргументи. входен_файл , 'р' ) като файл :
текст = файл . Прочети ( )

# Извлечете името на файла от пътя на входния файл
име_на_файл , разширение = Вие . път . разделен текст ( аргументи. входен_файл )
изходен_файл_по подразбиране = име_на_файл + '_шифровано' + разширение

# Шифроване на текста с помощта на афинния шифър
шифрован_текст = affine_cipher_encryption ( текст , а , b )

# Запишете шифрования текст в нов файл
с отворен ( изходен_файл_по подразбиране , 'в' ) като файл :
файл . пишете ( шифрован_текст )

И накрая, след като функцията за криптиране е завършена, нашата програма ще запази изхода със същото файлово разширение като входния файл.

Сега го запазете в „affine_cipher.py“. Сега стартирайте програмата, като въведете следната команда:

python affine_cipher. py

Ако не откриете грешка, резултатът изглежда като следното изображение:


Алтернативно изображение и надпис : Affine Cipher Python програма

Доказване на концепцията

Имаме поверително съобщение със следното име „message.txt“ и искаме да го излъчим на нашите членове:


Алтернативно изображение и надпис : Обикновен текст

И така, използваме програмата, която създадохме, преди да искаме да шифроваме това съобщение с помощта на Affine cipher с ключове 3 и 7. Командата е следната:

python affine_cipher. py съобщение. текст 3 , 7


Алтернативно изображение и надпис : Affine Cipher Python програма

Със скоростта на едно мигване криптираното съобщение се създава успешно и се записва в „message_encrypted.txt“. Нека да проверим как изглежда съобщението:


Алтернативно изображение и надпис : Афинен шифрован текст

Както можете да видите, съобщението е кодирано. Само нашите членове, които познават метода на шифроване и неговите ключове, могат да дешифрират съобщението.

Опитайте сами

Изтеглете този изходен код на програмата на нашата страница в GitHub на https://github.com/bimando/Affine-Cipher .

Заключение

В заключение, методът за криптиране на Affine cipher, форма на моноазбучен заместващ шифър, предлага повишена сигурност чрез използването на два ключа, което изисква внимателно разглеждане по време на избора на ключ. Разбирането на понятия като най-големия общ делител (НОД), взаимно прости числа и модулна аритметика е от съществено значение за разбирането на тънкостите на афинния шифър.

Уравнението на афинния шифър, E(x) = (a.x + b) mod m, служи като основен инструмент за криптиране, където „a“ и „b“ представляват ключовете, а „x“ символизира индекса на буквата в обикновен текст. Беше демонстрирано внедряването на автоматизирана програма на Python за процеса на криптиране на Affine cipher, за да рационализира ефикасно широкомащабните задачи за криптиране. Програмата включва ключови функционалности, включително импортиране на библиотеки, картографиране на азбука, функция за криптиране и разбор на аргументи от командния ред за входни и изходни пътища. По-специално, скриптът позволява настройките по подразбиране за ключовете и имената на изходните файлове, за да улесни безпроблемния процес на криптиране.

Често задавани въпроси (ЧЗВ)

Въпрос 1: Какво представлява афинният шифър и как се различава от шифъра на Цезар?

A1: Афинният шифър е вид моноазбучен шифър за заместване, който използва два ключа, „a“ и „b“, за криптиране. За разлика от това шифърът на Цезар използва фиксирано изместване от три позиции за всяка буква в открития текст.

Q2. Какви са предпоставките за разбиране на афинния шифър?

A2: За да разберете напълно афинния шифър, е изключително важно да имате представа за концепции като най-големия общ делител (НОД), взаимно прости числа и модулна аритметика.

Q3: Как мога да криптирам съобщение с помощта на Affine шифър в Python?

A3: За да автоматизирате процеса на криптиране на Affine cipher, можете да използвате програмата Python, която е описана в статията. Програмата ефективно криптира широкомащабни въведени текстове, опростявайки процедурата за криптиране. Статията предоставя инструкции стъпка по стъпка за импортиране на библиотеки, дефиниране на азбучно съпоставяне, създаване на функция за шифроване и анализиране на аргументите на командния ред за входни и изходни пътища.