Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2010, 23:26   #1
Катюшенька
Пользователь
 
Аватар для Катюшенька
 
Регистрация: 08.12.2008
Сообщений: 32
Лампочка Как переделать или упростить прогу

Написать программу для реализации процедуры скремблирования данных

Текст программы скремблирования:

Код:
#include <stdio.h>
#include <stdlib.h>
#define X 8
#define Y 17
void main(int argc, char* argv[]) {
	if (argc < 3) exit(0);
	FILE* inputFile;
	if ((inputFile = fopen(argv[1], "rb")) == NULL) {
	printf("Input File Error!\n");
	exit(1);
	}
	FILE* outputFile;
	if ((outputFile = fopen(argv[2], "wb")) == NULL) {
	printf("Output File Error!\n");
	exit(1);
	}
	unsigned char buf;
	unsigned char B[Y];
	unsigned char result;
	unsigned char A;
	unsigned char mask;
	unsigned char temp;
	int c = 0;
	while (!feof(inputFile)) {
	result = 0;
	mask = 128;
	fread(&buf, sizeof(unsigned char), 1, inputFile);
	if (feof(inputFile)) break;
	for (int i = 0; i < 8; i++) {
		if (mask & buf) A = 1;
		else A = 0;
		if (c < X) {
			result = result | (mask & buf);
			B[c] = A;
		}
		else if (c < Y) {
			temp = A ^ B[c - X];
			result = result | (temp << (7 - i));
			B[c] = temp;
		}
		else {
			temp = A ^ B[Y - X] ^ B[0];
			result = result | (temp << (7 - i));
			for (int j = 0; j < Y - 1; j++) {
				B[j] = B[j + 1];
			}
			B[Y - 1] = temp;
		}
		mask = mask >> 1;
		c++;
	}
	fwrite(&result, sizeof(unsigned char), 1, outputFile);
}
fclose(inputFile);
fclose(outputFile);
}
Текст программы дескремблирования:

Код:
#include <stdio.h>
#include <stdlib.h>
#define X 8
#define Y 17
void main(int argc, char* argv[]) {
	if (argc < 3) exit(0);
	FILE* inputFile;
	if ((inputFile = fopen(argv[1], "rb")) == NULL) {
		printf("Input File Error!\n");
		exit(1);
	}
	FILE* outputFile;

	if ((outputFile = fopen(argv[2], "wb")) == NULL) {
		printf("Output File Error!\n");
		exit(1);
	}
	unsigned char buf;
	unsigned char B[Y];
	unsigned char result;
	unsigned char _B;
	unsigned char mask;
	unsigned char temp;
	int c = 0;
	while (!feof(inputFile)) {
		result = 0;
		mask = 128;
		fread(&buf, sizeof(unsigned char), 1, inputFile);
		if (feof(inputFile)) break;
		for (int i = 0; i < 8; i++) {
			if (mask & buf) _B = 1;
			else _B = 0;
			if (c < X) {
				result = result | (mask & buf);
				B[c] = _B;
			}
			else if (c < Y) {
				temp = _B ^ B[c - X];
				result = result | (temp << (7 - i));
				B[c] = _B;
			}
			else {
				temp = _B ^ B[Y - X] ^ B[0];
				result = result | (temp << (7 - i));
				for (int j = 0; j < Y - 1; j++) {
					B[j] = B[j + 1];
				}
				B[Y - 1] = _B;
			}
			mask = mask >> 1;
			c++;
		}
		fwrite(&result, sizeof(unsigned char), 1, outputFile);
	}
	fclose(inputFile);
	fclose(outputFile);
}
Верю... Надеюсь... Люблю...
Катюшенька вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно переделать программу - упростить lukoie Фриланс 14 29.01.2010 01:09
Как можно переделать прогу (С++) Olya90 Помощь студентам 5 31.03.2009 15:32
переделать прогу daur3n Помощь студентам 2 10.03.2009 13:34
помогите переделать прогу +Hitman+ Паскаль, Turbo Pascal, PascalABC.NET 4 17.11.2008 23:26