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

Реалізація програми, яка буде забезпечувати шифрування і дешифрування будь-яких файлів по довільному алгоритму з використанням пароля. Можливість кодування та розкодування утиліти за простим алгоритмом Гамування, який базується на бітовій операції XOR.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык украинский
Дата добавления 04.04.2011
Размер файла 15,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Міністерство освіти і науки України

Житомирський державний технологічний університет

Лабораторна робота №3

з курсу "Системне програмування"

на тему: "Кодування файлу"

м. Житомир

2011 р.

Содержание

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

1. Технічне завдання

Програма повинна забезпечувати шифруванні і дешифруванні будь-яких файлів по довільному алгоритму з використанням пароля.

2. Вимоги до програми

1. Назва програми: Encode.

2. Iнтерфейс - командний рядок, в який вводяться режим роботи програми, пароль, а також імена файлів.

encode </e | /d> <File_to_code> [distination_file] [/p=password] Наприклад: encode /e myfile.txt myfile.cod /p=mypassword, де /e або /d - ключ який визначає шифрування або дешифрування; myfile.txt - специфікація файлу який має бути зашифрований; myfile.cod - специфікація файлу в який має бути записано зашифровану послідовність; /p=mypassword - пароль для шифрування.

3. Режим шифрування - ключ /e, режим дешифрування - ключ /d.

4. При невірному завданні параметрів програма повинна виводити інформацію про вірне завдання параметрів. Наприклад: encode </e | /d> <File_to_code> <distination_file> [/p=password]

5. Зашифрований файл повинен складатися із заголовку і кодованих даних.

6. Заголовок повинен містити: сигнатуру виду файлу; номер версії програми; рядок Copyright, із якого зрозуміло, якою програмою файл був зашифрований; контрольну суму, що повинна використатися в алгоритмі дешифрування; імя вихідного файлу для його відновлення при дешифруванні іншу інформацію на розсуд розробника.

7. Необхідно рахувати контрольну суму, яка буде контролювати правильність дешифрування. Найпростішій метод підрахунку контрольної суми - це сумування всіх байтів файлу.

8. Для виконання кодування даних можна використати будь який алгоритм. Найпростішим може бути алгоритм Гамування (гаммирования). Базується він на бітовій операції XOR.

3. Код програми

програма кодування пароль гамування бітовий

#include <string.h>

#include <io.h>

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <fcntl.h>

#include <sys\types.h>

#include <sys\stat.h>

#include <alloc.h>

#include <errno.h>

#define BUFSIZE 10000

char* buffer;

//структура для збереження заголовку

struct Header

{

char signat[3]; //сiгнатуру виду файлу;

int version; //номер версії програми;

char CopyRight[30]; //рядок Copyright

char filename[13];// імя вихідного файлу

unsigned long CRC; //контрольна сума

}header;

unsigned long Cryptographer(int count, char* pass, unsigned long conf, char* argv);

/***************************************************************************/

void main( int argc, char **argv )

{

int source, target;

int i;

int count;

unsigned long 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("Access denied! Password error! Please try again");

//закрити файли та звільнити память

close( source );

close( target );

free( buffer );

getch();

}

/***************************************************************************/

/* Функція приймає:

розмір тексту

пароль

поточну конторльну суму

ключ

Функція повертає:

конторльну суму

*/

unsigned long Cryptographer(int zise, char* password, unsigned long conf, char* key)

{

int Len = strlen( password );

int askikod;

int cur = 0;

for( int a=0; a<zise; 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. (бібліотека ЖІТІ)

Размещено на Allbest.ru


Подобные документы

  • Характеристики методів стискання інформації. Дворівневе кодування, алгоритм Лемпеля-Зіва. Блок-схема алгоритму кодування. Вибір мови, середовища програмування. Опис інтерфейсу, тестування програми. Бібліотеки, які використовуються при написанні програми.

    курсовая работа [728,9 K], добавлен 17.01.2014

  • Історія створення мови С#. Аналіз алгоритмів кодування даних. Розробка системи в середовищі Visual Studio 2008 Express. Схема шифрування алгоритму DES. Дослідження алгоритму RC2. Приклади хешів RIPEMD-160. Програмна реалізація основних процедур системи.

    дипломная работа [1,7 M], добавлен 25.10.2012

  • В пам'яті машини (на дискові чи в ОЗУ) данні зберігаються в вигляді послідовності нулів та одиниць. Кожна мінімальна комірка файлу зберігає нуль або одиницю. Спосіб представлення інформації на ПК. Ідея кодування з стисненням. Алгоритм Хаффмана.

    курсовая работа [55,7 K], добавлен 27.06.2008

  • Характеристика видів крипто-аналітичних атак. Особливості симетричних та асиметричних систем шифрування. Розробка програми, призначеної для криптографічного дешифрування повідомлення методом гамування за допомогою лінійного рекурентного регістру.

    курсовая работа [171,4 K], добавлен 25.08.2014

  • Сучасні методи захисту текстової інформації. Порівняльний аналіз шифру Бекона з іншими відомими шифрами. Практичне використання алгоритмів кодування тексту. Написання програми "Шифр Бекона", використані компоненти для реалізації алгоритму, їх властивості.

    курсовая работа [606,8 K], добавлен 28.03.2016

  • Утиліти як сервісні програми, що розширюють можливості ОС, допомагають діагностувати й усувати проблеми, забезпечувати роботу системи. Очистка та дефрагментація жорстких дисків. Архівування файлів на жорстких дисках серверів і клієнтських комп'ютерів.

    аттестационная работа [2,7 M], добавлен 28.11.2013

  • Розробка програмних модулів базових операцій обробки на підставі розрядно-логарифмічного кодування. Дослідження алгоритму розв'язку системи лінійних алгебраїчних рівнянь. Реалізація алгоритму Гауса. Покращення точності розрахунків за допомогою рл-чисел.

    курсовая работа [427,2 K], добавлен 20.11.2013

  • Позначення і назва програми, забезпечення, необхідне для її функціонування. Опис логічної структури, алгоритм, структура. Типи комп'ютерів і пристроїв, що використовуються при роботі програми. Формат, описання та спосіб кодування вхідних і вихідних даних.

    курсовая работа [163,6 K], добавлен 01.04.2016

  • Основи криптосистем та їх використання. Шифрування методом гамування, його зміст, прийоми та етапи реалізації. Вимоги до програмного продукту, його структура та принципи роботи, схеми алгоритму, вимоги до функціональних можливостей. Лістинг програми.

    курсовая работа [245,5 K], добавлен 25.08.2014

  • Проектування архітектури гри "Тетріс". Аналіз вимог до неї. Вивчення особливостей реалізації, кодування та тестування програми. Алгоритм побудови робочого поля. Вибір мови програмування. Розробка і налагодження тексту програми. Інструкції з експлуатації.

    курсовая работа [460,9 K], добавлен 04.03.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.