Шифр ГронсфельдаШифр Гронсфельда — поліалфавітний підстановочний шифр створений графом Гронсфельдом (керівником першої дешифрувальної служби Німеччини) в XVII столітті. Шифр можна вважати удосконаленням шифру Цезаря (надійність) і Віженера / Бофора (швидкість). ОписКлючДовжина ключа (K) повинна бути рівною довжині вихідного тексту. Для цього циклічно записують ключ до тих пір, поки його довжина не буде відповідати довжині вихідного тексту. Шифрування![]() Кожен символ Mi відкритого тексту M потрібно змістити вправо на Ki (відповідний символ ключа K) кроків. ДешифруванняКожний символ (Ci) зашифрованого тексту C потрібно змістити вліво на Ki (відповідний символ ключа K) кроків. ПрикладНехай дано вихідний текст: C = «GRONSFELD»
КлючДовжина тексту — 9 символів, отже й довжина ключа також повинна дорівнювати 9 символам.
Шифрування
. . . . . . . . .
Шифротекст (C) — «IRPSUFFQF» Дешифрування
. . . . . . . . .
Дешифрований текст (M) — «GRONSFELD» РеалізаціяPythonA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' * 2 # алфавіт
def f(mc, k, op):
k *= len(mc) // len(k) + 1
return ''.join([A[A.index(j) + int(k[i]) * op] for i, j in enumerate(mc)])
def encrypt(message, key):
return f(message, key, 1)
def decrypt(ciphertext, key):
return f(ciphertext, key, -1)
print(encrypt('GRONSFELD', '2015')) # шифрування
print(decrypt('IRPSUFFQF', '2015')) # дешифрування
Джерела
|
Portal di Ensiklopedia Dunia