WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

Шифр Бофораполиалфавитный подстановочный шифр создан сэром Фрэнсисом Бофортом. Шифр похож на шифр Виженера, со слегка измененным механизмом шифрования и использованием tabula recta (также известная как таблица Виженера). Применялся в роторной шифровальной машине M-209.

Описание

Ключ

Длина ключа (K) должна быть равной длине исходного текста. Для этого циклически записывают ключевое слово до тех пор, пока его длина не будет соответствовать длине исходного текста.

Шифрование

Tabula recta (или таблица Виженера)

Для того чтобы зашифровать открытый текст (M) с использованием ключа (K) нужно:

  1. Взять n-ый символ открытого текста (mn, где 0≤n<количество символов клера);
  2. Найти столбец ( j ) где символ в первой строке равен mn (s1 j = mn);
  3. Найти строку ( i ) где символ в j-ом столбце равен kn (si j = kn, где kn - n-ый символ ключа);
  4. Добавить к шифротексту ( C ) символ 1-го столбца i-ой строки (сn = si 1).

Дешифрирование

Для того чтобы дешифрировать шифротекст (C) с использованием ключа (K) нужно:

  1. Взять n-ый символ шифротекста (cn, где 0≤n<количество символов C);
  2. Найти строку ( i ) где символ в 1-м столбце равен cn (si 1 = cn);
  3. Найти столбец ( j ) где символ в i-ой строке равен kn (si j = kn, где kn - n-ый символ ключа);
  4. Добавить к расшифрованному тексту ( M ) символ 1-й строки j-го столбца (mn = s1 j).

Пример

Пусть дан исходный текст: C = "HELLOWORLD"
и ключ: K = "KEY"

Ключ

Длина клера - 10 символов, значит и длина ключа также должна равнятся 10 символам.
K = "KEYKEYKEYK"

Шифрование

  • m1 = "H".
  • j = 8
  • i = 4
  • c1 = s4 1 = "D"
    C += "D" (C = "D")
  • m2 = "E"
  • j = 5
  • i = 1
  • c2 = s1 1 = "A"
    C += "A" (C = "DA")

. . . . . . . . .

  • m10 = "D"
  • j = 4
  • i = 8
  • c10 = s8 1 = "H"
    C += "H" (C = "DANZQCWNNH")

Шифротекст (C) - "DANZQCWNNH"

Дешифрирование

  • c1 = "D".
  • i = 4
  • j = 8
  • m1 = s1 8 = "H"
    M += "D" (M = "H")
  • c2 = "A"
  • i = 1
  • j = 5
  • m2 = s1 5 = "E"
    M += "E" (M = "HE")

. . . . . . . . .

  • c10 = "H"
  • i = 8
  • j= 4
  • c10 = s1 4 = "D"
    M += "H" (M = "HELLOWORLD")

Дешифрованный текст (M) - "HELLOWORLD"

Реализация

Python

m = "HELLOWORLD"
k = "KEY"

k = (k*(len(m))+k)[:len(m)] # подгоняем ключ
c = ''.join([chr(((ord(k[i]) - ord(m[i])) % 26)+ord("A")) for i in xrange(len(m))]) # шифруем
print c # выдаст DANZQCWNNH

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии