Шифр Гронсфельда

Pause
ИИ-обзор статьи
Шифр Гронсфельда — полиалфавитный подстановочный шифр, созданный в XVII веке графом Гронсфельдом и представляющий собой модификацию шифра Виженера, в которой сдвиг символов текста осуществляется на числовое значение цифр ключа.
Формирование ключа шифра
Ключ при шифровании циклически повторяется до тех пор, пока его длина не сравняется с длиной исходного текста.
Алгоритм сдвига символов
При шифровании каждый символ открытого текста сдвигается вправо на величину, равную соответствующей цифре ключа. Альтернативно используется таблица Гронсфельда: символ шифротекста находится на пересечении столбца с заголовком, равным символу открытого текста, и строки с номером, соответствующим цифре ключа.
Дешифрование сдвигом влево
Для дешифрования каждый символ шифротекста сдвигается влево на соответствующую цифру ключа. При использовании таблицы Гронсфельда символ открытого текста находится как заголовок столбца, в котором в строке с номером, равным цифре ключа, располагается символ шифротекста.
Пример шифрования «GRONSFELD» ключом «2015»
Открытый текст «GRONSFELD» при ключе «2015» даёт шифротекст «IRPSUFFQF»; дешифрование восстанавливает исходный текст.

Шифр Гронсфельда — полиалфавитный подстановочный шифр создан графом Гронсвельдом (руководителем первой дешифровальной службы Германии) в XVII веке. Шифр можно считать усовершенствованием шифра Цезаря (надёжность) и Виженера / Бофора (скорость).

Описание

Ключ

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

Шифрование

undefined

Каждый символ Mi открытого текста M нужно на Ki (соответствующий символ ключа K) шагов сдвинуть вправо.
Или пользуясь таблицей Гронсфельда (Tx y, где x — номер строки, а y — номер столбца и отсчёт ведётся с нуля):
каждый символ Ci шифротекста C находится на пересечении столбца y, первый (заголовочный) символ которого равен соответствующему символу открытого текста Mi, и Ki-й (соответствующей цифры ключа) строки — (TKi y)

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

Каждый символ (Ci) зашифрованного текста C нужно на Ki (соответствующий символ ключа K) шагов сдвинуть влево.
Или пользуясь таблицей Гронсфельда (Tx y, где x — номер строки, а y — номер столбца и отсчёт ведётся с нуля):
нужно в Ki (i-ая цифра ключа K) строке найти символ, который равен соответствующему символу шифротекста (TKi y = Ci), и первый (заголовочный) элемент столбца будет i-ый символ открытого текста.

Пример

Пусть дан исходный текст: M = «GRONSFELD»
и ключ: K = «2015»

Ключ

Длина слова — 9 символов, значит и длина ключа также должна равнятся 9 символам.
K = «201520152»

Шифрование

  • M1 = «G».
  • y = 6 (y — номер столбца)
  • K1 = 2
  • С1 = T2 6 = «I»
    C += «I» (C = «I»)
  • M2 = «R».
  • y = 17
  • K2 = 0
  • С2 = T0 17 = «R»
    C += «R» (C = «IR»)

. . . . . . . . .

  • M9 = «D»
  • y = 3
  • K9 = 2
  • С9 = T2 3 = «F»
    C += «F» (C = «IRPSUFFQF»)

Шифротекст (C) — «IRPSUFFQF»

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

  • C1 = «I».
  • x = K1 = 2
  • y = 6 (y — индекс встречи Cn на x строке)
  • M += «G» (M = «G»)
  • C2 = «R»
  • x = K2 = 0
  • y = 17
  • M += «R» (M = «GR»)

. . . . . . . . .

  • C9 = «F»
  • x = K9 = 2
  • y = 3
  • M += «D» (M = «GRONSFELD»)

Дешифрованный текст (M) — «GRONSFELD»

Реализация

Python

СSharp

JavaScript

Категории

Pause