Реферат по предмету "Информатика, программирование"


Кодування файлу

Міністерствоосвіти і науки України
Житомирський державний технологічний університет
Лабораторнаробота №3
зкурсу «Системне програмування»
натему: «Кодування файлу»
м.Житомир
2011р.

Содержание
1. Технічне завдання
2. Вимоги до програми
3.Код програми
Висновок
Список використаноїлітератури

1. Технічне завдання
Програмаповинна забезпечувати шифруванні і дешифруванні будь-яких файлів по довільному алгоритму звикористанням пароля.
 
2. Вимоги до програми
1. Назвапрограми: Encode.
2. Iнтерфейс — командний рядок, в який вводяться режим роботи програми,пароль, а також імена файлів.
encode [distination_file] [/p=password] Наприклад: encode /e myfile.txtmyfile.cod /p=mypassword, де /e або /d — ключ який визначає шифрування абодешифрування; myfile.txt — специфікація файлу який має бути зашифрований; myfile.cod- специфікація файлу в який має бути записано зашифровану послідовність; /p=mypassword- пароль для шифрування.
3. Режим шифрування — ключ /e, режим дешифрування — ключ /d.
4. При невірномузавданні параметрів програма повинна виводити інформацію про вірне завданняпараметрів. Наприклад: encode [/p=password]
5. Зашифрованийфайл повинен складатися із заголовкуі кодованих даних.
6. Заголовокповинен містити: сигнатуру виду файлу;номер версії програми; рядок Copyright, із якого зрозуміло, якоюпрограмою файл був зашифрований; контрольну суму, що повинна використатися валгоритмі дешифрування; імя вихідного файлу для його відновлення придешифруванні іншу інформацію на розсуд розробника.
7. Необхіднорахувати контрольну суму, яка буде контролювати правильність дешифрування.Найпростішій метод підрахунку контрольної суми — це сумування всіх байтівфайлу.
8. Для виконаннякодування даних можна використати будь який алгоритм. Найпростішим може бутиалгоритм Гамування (гаммирования). Базується він на бітовій операції XOR.3. Код програми
програма кодування пароль гамування бітовий
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#defineBUFSIZE 10000
char*buffer;
//структурадля збереження заголовку
structHeader
{
charsignat[3]; //сiгнатуру виду файлу;
intversion; //номер версії програми;
charCopyRight[30]; //рядок Copyright
charfilename[13];// імя вихідного файлу
unsignedlong CRC; //контрольна сума
}header;
unsignedlong Cryptographer(int count, char* pass, unsigned long conf, char* argv);
/***************************************************************************/
voidmain( int argc, char **argv )
{
intsource, target;
inti;
intcount;
unsignedlong CRCM = 0;
clrscr();
//перевіркакількості аргументів командного рядка
if(argc != 5 )
{
printf("\nUsage:"
"\tMYENCODE\n"
"\t[d:][\\path]\\oriuginal_file\n"
"\t[d:][\\path]\\target_file\n"
"\tpassword\n"
"\tidenteficator(\e or \d )\n" );
getch();
exit(1 );
}
//відкриваємовихідний файл
source= open( argv[ 1 ], O_BINARY | O_RDONLY );
//обробкапомилки відкриття файлу
if(source == -1 )
{
printf("\nOpen source file error: %d", errno );
getch();
exit(2 );
}
//створюємоновий файл куди зпишим код
target= open( argv[ 2 ],
O_BINARY| O_WRONLY | O_CREAT | O_EXCL,
S_IREAD| S_IWRITE );
//перевіряємона наявність одноіменного файлу
//тазапитуємо користувача про необхідність його заміни новим
if(errno == EEXIST )
{
printf("\nFile already exists. Overwrite? (Y/N)\n" );
i= getch();
if(( i == 'y' ) || ( i == 'Y' ) )
target= open( argv[ 2 ],
O_BINARY| O_WRONLY | O_CREAT | O_TRUNC,
S_IREAD| S_IWRITE );
}
//обробкапомилки створеннянового файлу
if(target == -1 )
{
printf("\nOpen target file error: %d", errno );
getch();
exit(2 );
}
//якщопотрібно декодувати файл,
//тозчитуємо із закодованого файлу заголовок
if(strcmp(argv[4],"/d") == 0)
read(source,&header, sizeof(struct Header));
//якщопотрібно кодувати файл,
//тозаписуємо заголовок до файлу з кодом
if(strcmp(argv[4], "/e") == 0 )
{
strcpy(header.signat,«AY»);
header.version= 1;
strcpy(header.CopyRight,«Uncode»);
header.CRC= 0;
strcpy(header.filename,argv[1 ]);
write(target,&header,sizeof(struct Header));
}
//виділяємопамять для символьного масиву
count= BUFSIZE;
if(( buffer = ( char* )malloc( count ) ) == NULL )
{
printf("\nNot enough memory" );
getch();
exit(3 );
}
while(!eof( source ) )
{
//зчитуємоблок символів з вихідного файлу
count= read( source, buffer, count )
if(count == -1 )
{
printf("\nRead file error: %d", errno );
getch();
exit(4 );
}
//кодуємозчитані символи
CRCM+= Cryptographer(count,argv[3],CRCM,argv[4]);
//записуємоблок закодованих символів до вхідного файлу
count= write( target, buffer, count )
if(count == -1 )
{
printf("\nWrite file error: %d", errno );
getch();
exit(5 );
}
}
//якщопотрібно кодувати файл,
//топерезаписуємо заголовок файлу з кодом виправляючи контрольну суму
if(strcmp(argv[4],"/e")==0)
{
header.CRC= CRCM;
lseek(target,0L, 0);
write(target,&header, sizeof(struct Header));
}
//якщопотрібно декодувати файл,
if(strcmp(argv[4],"/d")==0)
//топорівнюємо контрольну суму
if(header.CRC!=CRCM)
printf(«Accessdenied! Password error! Please try again»);
//закритифайли та звільнити память
close(source );
close(target );
free(buffer );
getch();
}
/***************************************************************************/
/*Функція приймає:
розміртексту
пароль
поточнуконторльну суму
ключ
Функціяповертає:
конторльнусуму
*/
unsignedlong Cryptographer(int zise, char* password, unsigned long conf, char* key)
{
intLen = strlen( password );
intaskikod;
intcur = 0;
for(int a=0; a
{
if(cur > Len )
cur= 0;
//якщоварто декодувати
if(strcmp(key,"/d")==0)
{
buffer[a]^= password[cur];
askikod= buffer[a];
conf+= askikod;
}
//якщоварто закодувати
if(strcmp(key,"/e")==0)
{
askikod= buffer[a];
conf+= askikod;
buffer[a]^= password[cur];
}
cur++;
}
return(conf);
}
/***************************************************************************/

/>Висновок
Отже,на даній лабораторній роботі було реалізовано програму для кодування тадекодування файлів. Утиліта забезпечує можливість закодувати та розкодуватифайл (закодований цією ж програмою) за простим алгоритмом Гамування.
Програмнийкод може бути легко змінений з метою заміни алгоритму кодування\декодування.Для цього варто лише замінити функцію Cryptographer(), у якій буде реалізовано свій методобробки даних.

/>Список використаноїлітератури
1. Касаткін А.І. Управление ресурсами. — Минск: Вышейшая школа, 1992.
2. Касаткін А.І. Системное программирование.- Минск: Вышейшая школа, 1991.
3. Власенко О.В., Данильченко О.М., Северин О.О. Системнепрогрмамування. Курс лекцій. Частина 1. (бібліотека ЖІТІ)


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

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

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.