Как пользоваться
- Выберите режим — буквы (классический блокнот) или байты — и действие.
- В режиме букв выберите алфавит; появится пример для него. На этой странице по умолчанию — русский алфавит из 33 букв с Ё.
- Введите сообщение и нажмите «Новый случайный ключ»: он создаст ровно столько символов ключа, сколько нужно сообщению.
- Скопируйте результат и ключ. Чтобы расшифровать, нажмите кнопку под результатом или переключите действие и вставьте шифротекст с тем же ключом.
Как это работает
- Буквы: буквы алфавита нумеруются с нуля (А = 0, Б = 1 … Я = 32 в русском). Шифрование: C = (P + K) mod n; расшифровка: P = (C − K) mod n, где n — 33, 26 или 27. Строчные буквы становятся заглавными; Ё и Й — отдельные буквы алфавита.
- Байты: сообщение берётся в UTF-8, каждый байт складывается по XOR с байтом ключа, шифротекст — hex. Расшифровка применяет XOR ещё раз и читает байты как UTF-8.
- Ключ должен быть не короче сообщения; он используется с первого символа.
Пример
Сообщение ПРИВЕТ с ключом ЖУКМОЛ:
| П | Р | И | В | Е | Т | |
|---|---|---|---|---|---|---|
| Сообщение | 16 | 17 | 9 | 2 | 5 | 19 |
| Ключ | Ж 7 | У 20 | К 11 | М 13 | О 15 | Л 12 |
| Сумма mod 33 | 23 | 37 → 4 | 20 | 15 | 20 | 31 |
| Шифротекст | Ц | Д | У | О | У | Ю |
Результат — ЦДУОУЮ, использовано 6 символов ключа. Расшифровка ЦДУОУЮ ключом ЖУКМОЛ снова даёт ПРИВЕТ: Ц 23 − Ж 7 = 16 = П и так далее.
Классический пример на латинице — HELLO с ключом XMCKL — даёт EQNVZ.
Советы
- Храните ключ отдельно от шифротекста: у кого есть оба, тот прочитает сообщение.
- Уничтожайте использованный ключ: именно повторное использование губило реальные системы одноразовых блокнотов.
- В режиме байтов обеим сторонам нужен один и тот же hex-ключ; передавайте его текстом, а не скриншотом.