AutoKey - ремонт и замена автоключей
Автоключ (autokey) - это алгоритм криптографии, в котором каждый символ открытого текста используется в качестве ключа для шифрования следующих символов. Автоключ может быть использован как для шифрования, так и для дешифровки сообщений.
Приведем пример кода на языке Python для шифрования сообщения с использованием автоключа:
python
def autokey_cipher(string, key):
# Преобразование ключа в цифровой массив
key_arr = [ord(i) - 97 for i in key.lower()]
# Перевод строки в нижний регистр и удаление пробелов
string = string.lower().replace(" ", "")
# Преобразование строки в цифровой массив
str_arr = [ord(i) - 97 for i in string]
# Инициализация массива для зашифрованного сообщения
cipher_arr = []
# Добавление первых символов ключа в зашифрованную строку
for i in range(len(key_arr)):
cipher_arr.append((key_arr[i] + str_arr[i]) % 26)
# Итерация по остальным символам строки и ключа
for i in range(len(key_arr), len(str_arr)):
cipher_arr.append((str_arr[i] + cipher_arr[i-len(key_arr)]) % 26)
# Преобразование зашифрованного массива в строку
cipher = "".join([chr(i+97) for i in cipher_arr])
return cipher
Для расшифровки сообщения, полученного при помощи автоключа, можно использовать следующий код:
python
def autokey_decipher(cipher, key):
# Преобразование ключа в цифровой массив
key_arr = [ord(i) - 97 for i in key.lower()]
# Преобразование строки в цифровой массив
cipher_arr = [ord(i) - 97 for i in cipher.lower()]
# Инициализация массива для расшифрованного сообщения
str_arr = []
# Расчет и добавление первых символов сообщения
for i in range(len(key_arr)):
str_arr.append((cipher_arr[i] - key_arr[i]) % 26)
# Итерация по остальной части сообщения и ключа
for i in range(len(key_arr), len(cipher_arr)):
str_arr.append((cipher_arr[i] - str_arr[i-len(key_arr)]) % 26)
# Преобразование расшифрованного массива в строку
string = "".join([chr(i+97) for i in str_arr])
return string