Шифр, основывающийся на шифре Виженера, в котором или само сообщение, или результирующая криптограмма используются в качестве ключа, называется шифром с автоключом. Шифрование начинается с помощью «первичного ключа» (который является настоящим ключом в нашем смысле) и продолжается с помощью сообщения или криптограммы, смещенной на длину первичного ключа. Рассмотрим пример, в котором первичным ключом является набор букв ЗЕБРА. В табл. 12.2 приведено шифрование, когда в качестве ключа используется сообщение.

Таблица 12.2.

Шифр с автоключом (ключ – сообщение)

Если же в качестве ключа использовать криптограмму, то получится шифрование, как в табл. 12.3.

Таблица 12.3.

Шифр с автоключом (ключ – криптограмма)

Теперь, когда понятно, как работает данный шифр, реализуем второй вариант как чуть более сложный, чем первый. В интерфейсе программы менять ничего не станем, поэтому он будет выглядеть как в предыдущем примере (см. рис. 12.5). Только поменяем назначение текстового поля. Теперь оно будет содержать ключ уже не в виде целого числа, а в виде произвольной строки, полностью состоящей из русских букв верхнего и нижнего регистров, за исключением буквы «ё» обож регистров.Как обычно, сначала приведем код с объявлением необходимых типов, констант и переменных, а также объявление класса нашей формы. Все это содержится в листинге 12.18.