Тема: «Простой файловый шифровщик на языке Си»




Скачать 75.64 Kb.
НазваниеТема: «Простой файловый шифровщик на языке Си»
ТипИсследовательская работа
rykovodstvo.ru > Руководство эксплуатация > Исследовательская работа
Конференция научно-технического творчества школьников

«Лабиринты науки»

Секция «Программирование»

Тема: «Простой файловый шифровщик на языке Си»

Исследовательская работа

Выполнил:

Елизаров Денис Романович

ученик 6 «А» класса

МОУ лицей №86

Научный руководитель:

Смирнова Ирина Сергеевна

учитель информатики

МОУ лицей №86

Ярославль, 2014

Оглавление



Введение 3

1.Описание программы SFE 4

2. Инструкция по пользованию программы 6

3. Используемые функции языка Си в программе SFE 7

Заключение 10

Список использованной литературы 11

Приложение 1. Код программы «SFE» 12


Введение


Замысел проекта состоит в создании шифровщика по закрытому ключу.

Сегодня шифрование данных весьма важно при передаче данных по открытым каналам связи, к которым относится и Интернет. Использование закрытого ключа позволяет получить закодированное сообщение, которое принципиально невозможно раскодировать без доступа к ключу.

Существуют и другие способы шифрования данных, например, системы с открытым ключом. Но эти системы математически значительно более сложны и не дают полной гарантии конфиденциальности [2].

Поэтому мне стало интересно создать программу шифрования закрытым ключом. В качестве компилятора я выбрал открытый компилятор Си – GNU Compiler Collection (GCC).

Проблема: Как создать программу «шифровщик по закрытому ключу»?

Цель: создание программы «Простой Файловый Шифровщик (SFE)» для персонального компьютера.

Задачи:

  • Узнать новые процедуры и функции языка C;

  • Попробовать себя в качестве программиста;

  • Написать код программы SFE.

Методы исследования:

  • Анализ теоретической литературы по изучаемой проблеме,

  • Программирование.

Практическая значимость работы заключается в том, что был создана программа, которую можно применять для шифрования данных. Эта программа может быть использована на уроках информатики в теме «Кодирование и декодирование».
  1. Описание программы SFE


Программа SFE - это система шифровки, созданная для использования на персональном компьютере. Код программы находится в приложении 1.

Данная программа обеспечивает шифровку по следующему алгоритму: программа открывается в командной строке с параметрами:

SFE [input file] [key file] [output file]

Где inputfile – это файл, из которого считывается текст, который будет закодирован с помощью ключа keyfile в файл outputfile по алгоритму.

Программа считывает байт из inputfile, потом считывает байт из keyfile, потом проделывает над ними операцию xor(^) [3], и записывает получившийся результат в outputfile, пока не достигнет конца файла inputfile. Если достигут конец файла keyfile, то программа продолжает считывать его с начала.

xor(исключающее или)

Таблица истинности:



Для многобитовых значений проводится побитно:



В качестве ключа могут быть использованы любые имеющиеся файлы. Принцип кодирования требует, чтобы файлы ключей имели достаточную длину, желательно большую, чем у кодируемого файла. Кроме того файл ключа не должен иметь повторяющихся фрагментов данных, желательно, чтобы это был специально сгенерированный ключ из случайных кодов. В качестве ключа неплохо подойдут файлы архивов.

2. Инструкция по пользованию программы




  • Открыть командную строку (См. рисунок 1)

(для быстрого её открытия я написал файл 1.bat заключающий в себе одну строку:Cmd %CD%)



Рисунок 1. Командная строка

  • Запустить программу SFE с параметрами, описанными ранее (См. рисунок 2)



Рисунок 2 SFE с параметрами

  • Результат выполнения программы (См. рисунок 3)



Рисунок 3 Результат

3. Используемые функции языка Си в программе SFE


При написании программного кода я использовал следующие функции [1]:

  • printf (char*mainstr,…);

Функция printf()выводит на экран набор символов и возвращает число выведенных символов или отрицательное значение в случае ошибки.

  • strncpu (char *str1, const char *str, size_t count);

Функция strncpy() копирует не более count символов из строки, адресуемой параметром str2, в массив, адресуемый параметром str1. Параметр str2 должен указывать на строку, заканчивающуюся символом конца строки.

  • strstr (const char *str1, const char *str2);

Функция strstr() возвращает указатель на первое вхождение подстроки, адресуемой параметром str2, в строку, адресуемую параметром str1. Если совпадение не обнаружено, возвращается нулевой указатель.

  • fopen (const char * stream,const char*mode);

Функция fopen() открывает файл, имя которого задается параметром fname, и возвращает указатель на поток, связанный с этим файлом. Типы операций, которые разрешено выполнять с файлом, определяются параметром mode. Возможные значения параметра mode приведены в таблице 13.1. Строка символов, которая будет играть роль имени реального файла, должна определять его имя, допустимое в данной операционной системе. Эта строка может включать спецификацию пути, если среда поддерживает такую возможность.

  • feof (FILE *stream);

Функция feof() проверяет, достигнут ли конец файла, связанного с потоком stream. Если указатель текущей позиции файла установлен на конец файла, возвращается ненулевое значение; в противном случае возвращается нуль.

  • rewind (FILE * stream);

Функция rewind() перемещает указатель текущей позиции файла в начало заданного потока. Она также очищает связанные с потоком stream признаки конца файла и ошибок.

  • fgetc (FILE * stream);

Функция fgetc() возвращает символ, взятый из входного потока stream и находящийся сразу после текущей позиции, а также увеличивает указатель текущей позиции файла. Этот символ читается как значение типа unsigned char, преобразованное в целое.

  • ferror (FILE * stream);

Функция ferror() проверяет наличие ошибки при работе с файлом, связанным с потоком stream. Нулевое значение, возвращаемое этой функцией, говорит о том, что никакой ошибки не обнаружено, а ненулевое значение означает ее наличие.

  • fputc (int ch,FILE *stream);

Функция fputc() записывает символ ch в текущую позицию потока stream, a затем увеличивает указатель текущей позиции файла. Хотя на практике при объявлении символа ch он всегда имеет тип int, функцией fputc() тип символа преобразуется в unsigned char. Поскольку в момент вызова символьный аргумент преобразуется к целому типу, в качестве аргументов обычно можно использовать и символьные переменные. При использовании целого значения, старший байт попросту отбрасывается.

  • fclose (FILE * stream);

Функция fclose() закрывает файл, связанный с потоком stream, и дозаписывает его буфер. После обращения к функции fclose() элемент stream больше не связан с файлом, и все автоматически выделенные буфера освобождаются. [4]

Заключение



В работе приведено описание созданной программы SFE, инструкция по её использованию и описаны функции языка Си, которые применялись в программном коде.

Созданная программа позволяет кодировать файлы с использованием закрытого ключа. В качестве ключа могут быть использованы любые имеющиеся файлы. Принцип кодирования требует, чтобы файлы ключей имели достаточную длину, желательно большую, чем у кодируемого файла. Кроме того файл ключа не должен иметь повторяющихся фрагментов данных, желательно, чтобы это был специально сгенерированный ключ из случайных кодов. В качестве ключа неплохо подойдут файлы архивов.

Эта программа может быть использована учителем на уроках информатики в теме «Кодирование и декодирование» как демонстрацию шифрования данных.

Список использованной литературы




  1. К.Ю. Поляков, Язык программирования Си практический курс [Электронный ресурс] – Режим доступа: http://kpolyakov.narod.ru/school/c.htm

  2. Кодирование информации [Электронный ресурс] – Режим доступа: http://ru.wikipedia.org/

  3. Оператор побитового исключающего ИЛИ [Электронный ресурс] – Режим доступа: http://msdn.microsoft.com/ru-ru/library/vstudio/ y2hf3412%28v =vs.100%29.aspx

  4. Полный справочник по Си [Электронный ресурс] – Режим доступа: http://lord-n.narod.ru/download/books/walla/programming/Spr_po_C/main.htm


Приложение 1. Код программы «SFE»


#include

#include
#define tmpstrlen 100

#define sourcefile_pn 1

#define keyfile_pn 2

#define outfile_pn 3

#define null 0
charhelpmessage[]="File encrypter/decrypter.\r\nEncryption is performed with a SECRET key of sufficient length.\r\nUse:sfe.exe [source file] [key file] [output file] \r\n.";

charshorthelpmessage[]="Simple file encrypter.\r\nFor help type: sfe.exe --help.\r\n";

charinvalidmessage[]="Invalid parameters or cannot open file\r\n";

charferrormessage[]="Cannot write output file";

charalldonemessage[]="All done. Exiting.\r\n";

charinsufparamessage[]="Insufficient parameters.\r\n";
int main(intc,char*v[])

{

if (c<2) {printf(shorthelpmessage); return 0;} // первый параметр – путь и имя программы.

chartmpstr[tmpstrlen] ;

strncpy(tmpstr,v[sourcefile_pn],tmpstrlen-1);

if (strstr(tmpstr,"--help")){ printf(helpmessage); return 0;}
FILE *f,*k,*r;
if (c<4) {printf(insufparamessage); return 0;}
f=fopen(v[sourcefile_pn],"rb");

k=fopen(v[keyfile_pn],"rb");

r=fopen(v[outfile_pn],"wb");

if ((f==null) || (k==null) || (r==null)){ printf (invalidmessage);return 0;}

chara,b,d;
char cur,nxt;

if (!feof(f)) cur=fgetc(f); /* «Костыль» - средство добавления недостающей функциональности или исправления серьёзных дыр без должного редизайна системы. Написано из-за странной работы feof. */
while(!feof(f))

{

nxt=fgetc(f);

if (feof(k)) rewind(k); //перейти в начало ключевого файла, когда он кончается

b=fgetc(k);

d=cur^b;

cur=nxt;
if (!ferror(r)) fputc(d,r); else {printf (ferrormessage);return 0;}

}

fclose(f);fclose(k);fclose(r);

printf (alldonemessage);return 0;

}

Похожие:

Тема: «Простой файловый шифровщик на языке Си» iconТема Глагол “to be” в Present, Past and Future Simple (в Настоящем,...
Тема Глагол “to be” в Present, Past and Future Simple (в Настоящем, Прошедшем и Будущем простом времени). Типы вопросов в английском...

Тема: «Простой файловый шифровщик на языке Си» iconПояснительная записка Кафедра пмиК
Файловый менеджер для операционной системы Android с поддержкой облачных сервисов

Тема: «Простой файловый шифровщик на языке Си» iconСведения о начальной (максимальной) цене договора (цене лота)
Организатором простой закупки, настоящим объявляет о проведении процедуры простой закупки и приглашает юридических лиц, физических...

Тема: «Простой файловый шифровщик на языке Си» iconТема Основные термины и понятия дисциплины 4 Тема Информация и бизнес 8
Тема Технология и практика взаимодействия пользователей с мировыми ресурсами через сетевые структуры 30

Тема: «Простой файловый шифровщик на языке Си» iconПрактическая работа 1 Тема информация
Сценарии, написанные на языке javascript, могут располагаться на самой html-странице между тегами, которые в свою очередь обычно...

Тема: «Простой файловый шифровщик на языке Си» iconКурсовой проект 3 Тема, которую нам предписано
Целью курсовой работы является закрепление теоретического материала, приобретение практических навыков проектирования Windows приложений...

Тема: «Простой файловый шифровщик на языке Си» iconИнструкция подачи заявки и тезиса для участия в конференции
Названия разделов и полей представлены на английском языке, при наведении курсора на нужную надпись на английском – появляется перевод...

Тема: «Простой файловый шифровщик на языке Си» iconЗаявление может заполняться на русском или английском языках
Заявления на русском языке название компании также указывается на английском языке

Тема: «Простой файловый шифровщик на языке Си» iconПрограммирование на языке ассемблера в системе msx-2 Владивосток
Кувт "yamaha". Рассмотрен процесс создания и выполнения программ на языке ассемблера, организации их связи с программами на языках...

Тема: «Простой файловый шифровщик на языке Си» iconЕ. П. Давлетярова Ю. А. Медведев Файловый менеджер Total Commander ч асть 2
«Информатика», «Математика и информатика», «Информационные и коммуникационные технологии в образовании», а также могут быть использованы...

Тема: «Простой файловый шифровщик на языке Си» iconФгуп “Морсвязьспутник” Россия, 107564 Москва, а/я 28, ул. Краснобогатырская,...
Заявления на русском языке название компании также указывается на английском языке

Тема: «Простой файловый шифровщик на языке Си» iconТеоретико-методологические аспекты анализа мирового рынка технологий
Со временем под этим стал подразумеваться также сам процесс передачи или получения этих сведений. В настоящее время в русском языке...

Тема: «Простой файловый шифровщик на языке Си» iconМинистерство образования и науки российской федерации
Цель дисциплины заложить основы терминологической подготовки будущих специалистов, научить студентов сознательно и грамотно применять...

Тема: «Простой файловый шифровщик на языке Си» iconУста в
Полное наименование Ассоциации на русском языке – Ассоциация Саморегулируемая организация «Гильдия строителей Республики Марий Эл»,...

Тема: «Простой файловый шифровщик на языке Си» iconРуководство пользователя (на русском языке) 1 шт
Предустановленное и настроенное программное обеспечение 1 шт. (программа установки драйверов и программное обеспечение для создания...

Тема: «Простой файловый шифровщик на языке Си» iconПример задания «перевод профессионального текста»
Инструкция по выполнению задания: При помощи компьютерной программы Microsoft Word создать документ, в котором напечатать перевод...


Руководство, инструкция по применению






При копировании материала укажите ссылку © 2018
контакты
rykovodstvo.ru
Поиск