Вопросам защиты информации в настоящее время уделяется большое внимание. Среди разнообразных средств защиты информации криптографические методы занимают особое место. В работе показана разработка программного продукта на языке программирования С++, реализующего такие методы шифрования как метод простой замены (подстановки), позволяющего обычным пользователям компьютера зашифровать и расшифровать необходимый им текст.
В последние десятилетия накопление практического опыта использования различных алгоритмов и протоколов происходит очень быстро, а знания по этой теме не могут претендовать на полноту изложения. В этой связи, актуальность темы очевидна, так как информация в современном обществе – одна из самых ценных вещей в жизни, требующая защиты от несанкционированного проникновения лиц, не имеющих к ней доступа.
Программ для шифрования файлов существует бессчетное множество, большинство из них просты и удобны в применении [2]. Как ни странно, но самым простым и одним из самых эффективных, на мой взгляд, (при правильном использовании) алгоритмов шифрования является так называемое XOR-шифрование [1]. Алгоритм XOR-шифрования основан на применении бинарной логической операции «Исключающее или» [3].
На вход алгоритму подается исходный текст (в общем случае, любой набор байт, т.е. произвольный файл) и строка пароля/ключа. Идея алгоритма заключается в том, что к каждому символу исходного текста и очередному символу строки пароля/ключа применяется побитовая логическая операция XOR. Результат записывается в файл. Операция XOR обладает симметричностью [4]. Это значит, что если зашифровать один и тот же файл два раза с одним и тем же паролем/ключом, то на выходе получим сам этот файл без изменений. Из этого факта становится ясно, что для шифрования и расшифровывания будет использоваться одна и та же функция, что существенно упрощает реализацию алгоритма. При этом, если при расшифровывании используется тот же пароль/ключ, что и при шифровании, то на выходе будет получен исходный файл. Если же пароли/ключи различаются, то на выходе будет получен файл, который будет содержать некорректные данные.
В разработанном мною приложении входными данными при зашифровывании являются символы исходного текстового файла, который открывается и считывается программой. Приведу алгоритм программы.
1) На входе поступают указатели на исходный и результирующий файлы.
2) Ввод ключа шифрования.
3) Чтение очередного символа (байта) из исходного файла.
4) Применение операции XOR к прочитанному байту и очередному символу ключа.
5) Результат операции записывается в результирующий файл.
6) Если не достигнут конец исходного файла, переход на шаг 2.
7) Если ключ короче исходного файла (а в подавляющем большинстве случаев так и будет), то ключ используется циклически, т.е. после последнего символа пароля вновь переход к первому.
Инструкция для работы с приложением «Шифрование».
1) Открыть файл input.txt и ввести исходный текст для шифрования. 2) Запустить приложение Shifr.exe. 3) Ввести ключ шифрования размером от 1 до 10 символов. При введении ключа более 10 символов, программа будет шифровать текст, но в ключе читаются только первые 10 символов, остальные программа отбрасывает. 4) Нажать Enter. 5) Открыть файл Shifr.txt, в который записался зашифрованный текст.
Приведу фрагмент программного кода «Шифрование».
setlocale(LC_ALL, "Russian");
char key[10];
cout<<"Введите код шифрования "<<endl;
cin>>key;
FILE *input = fopen("input.txt", "rb"); \\открытие файла ввода
FILE *output = fopen("shifr.txt", "wb"); \\открытие файла вывода
if ( input != NULL && output != NULL )
{
unsigned char buffer[BUFSIZ];
size_t count, i, j = 0;
do {
count = fread(buffer, sizeof *buffer, sizeof buffer, input); \\начало чтения исходного файла
for ( i = 0; i < count; ++i ) \\начало побайтного сложения XOR
{
buffer[i] ^= key[j++];
if ( key[j] == '\0' )
j = 0;
}
fwrite(buffer, sizeof *buffer, count, output); \\перепись исходного файла в зашифрованный вид
} while ( count == sizeof buffer );
fclose(input); \\закрытие файла ввода
fclose(output); \\закрытие файла вывода
}
cout<<"Готово, текст зашифрован ";
return 0;
}
Результат работы программы «Шифрование»
Аналогично, для расшифрования текста нужно.
1) Открыть файл Shifr.txt и скопировать/ввести в него текст, который нужно расшифровать. 2) Запустить приложение Deshifr.exe. 3) Ввести ключ шифрования, он должен быть тем же, что и при шифровании текста, иначе программа текст не расшифрует (в ключе читаются только первые 10 символов, остальные программа отбрасывает и продолжает шифрование). 4) Нажать Enter. 5) Открыть файл Deshifr.txt, в который записывается расшифрованный текст.
В заключении можно добавить, что по своей структуре программы шифрования и дешифрования информации хорошо организованы, и это позволяет в случае необходимости их легко модифицировать. Тема моего исследования очень интересна для меня и на сегодняшний день является актуальной. С каждым годом компьютерная информация играет всё более важную роль в нашей жизни и проблема её защиты становится наиболее острой.
Библиографическая ссылка
Куклин А.Е. ШИФРОВАНИЕ И ДЕШИФРОВАНИЕ ТЕКСТОВЫХ ФАЙЛОВ МЕТОДОМ XOR-ШИФРОВАНИЯ // Материалы МСНК "Студенческий научный форум 2025". 2021. № 7. С. 70-72;URL: https://publish2020.scienceforum.ru/ru/article/view?id=404 (дата обращения: 06.05.2025).