Загрузить исходный код ЗДЕСЬ.
#include <windows.h> #include <stdio.h> // реализация шифра Вернама int main() { // Устанавливаем кодовую страницу для ANSI SetConsoleOutputCP(1251); // 1251 - кодировка для русского языка char original = 'A'; // Исходный символ char key = 'K'; // Ключ для шифрования char encrypted = original ^ key; // Шифрование char decrypted = encrypted ^ key; // Расшифровка printf("Исходный символ: %c\n", original); printf("Зашифрованный символ: %d\n", encrypted); printf("Расшифрованный символ: %d -> %c\n", decrypted, decrypted); return 0; }
Шифр Вернама, также известный как одноразовый пароль, является одним из самых безопасных методов шифрования. В этом шифре каждый символ сообщения шифруется с помощью случайного ключа, который должен быть такой же длины, как и само сообщение.
Процесс шифрования включает в себя побитовую операцию XOR между символами сообщения и ключа. Главная особенность — ключ должен использоваться только один раз и храниться в секрете. Если ключ действительно случайный и одноразовый, то шифр Вернама обеспечивает абсолютную безопасность, так как без знания ключа расшифровать сообщение невозможно.
Операции для использования шифра Вернама: исходный символ, операция XOR с символом ключа для шифрования, для расшифровки исходный символ, операция XOR с символом ключа. XOR с ключем
В C++ операция XOR выполняется с помощью оператора ^.
Шифр Вернама Зашифрованный символ = Исходный символ XOR Ключевой символ Расшифрованный символ = Зашифрованный символ XOR Ключевой символ
В операции XOR порядок операндов не имеет значения:
A XOR B = B XOR A