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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2009, 00:01   #21
FastDead2
Пользователь
 
Аватар для FastDead2
 
Регистрация: 09.05.2009
Сообщений: 12
По умолчанию

zash.txt - это зашифрованное сообщение
kl.txt - ключ
размер каждый раз по разному смотря какой файл, и вот теперь заметил, что как-то через раз он дешифрует. Иногда нормально, иногда не додешифрует в конце или начале. Почему так, совсем не понятно(

А исправления кстати есть добавил shStr[len]='\0'; при шифровании и
key[len]='\0'; при создании ключа.

Код:
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{ int i,len,n,m; //Определяем необходимые переменные
  char naz[20]; 
  char nazv[20]; 

  printf("Please use English letters!!!\n");
  printf("\nVtikai razmer: \n");
  scanf("%d",&m);
// текст из файла для шифрования
printf("\nThe initial text: \n");
FILE *x;
size_t k;
char ooStr[999];

x = fopen("qw.txt","r");
len = 0;
while(!feof(x))
 {
  k = fread(ooStr,sizeof(char),m,x);
  ooStr[k]=0;
  len += k;
  printf("%s",ooStr);
 }
fclose(x);

   //len = strlen(ooStr);// определяем длину строки открытого текста
   printf("\n%d\n", len);
   char *oStr = new char[len]; //объявляем динамический массив указанной длины для открытого текста
   char *key = new char[len+1];  //точно такой же массив объявляем для ключа
   char *shStr = new char[len+1];  //массив-приемник для зашифрованного текста
   for(i=0;i<len;i++)
   oStr[i]=ooStr[i];
    printf("\n\n"); 

// определяем ключ случайным образом
   printf("\nKey:  \n");
   for(i=0; i<len; i++)
   key[i]=(char)(rand()%254+1);
      key[len]='\0';
   printf("%s", key);
   printf("\nlen = \n%d\n%d\n",len,strlen(key));
   printf("\n\n");
// записываем ключ в файл
   	FILE *y;
	printf("Please, enter a name of a file for a key: ");
	scanf("%s",naz);
	int num;
    if ((y=fopen(naz,"w"))==NULL)
    {printf(" Owibka otkritija fajla!!!");
    getch();}
	else
	{
		num=fwrite(key, sizeof(char), m, y);
	}
	fclose(y); 
	printf("The file is written down...\n");

//собственно само шифрование
   for(i = 0; i<len; i++)
      shStr[i]=oStr[i]^key[i];
   shStr[len]='\0';
//для наглядности выведем на экран результат работы
    printf("\nThe ciphered text: %s", shStr);
	   printf("len = \n%d\n%d\n",len,strlen(shStr));

// записываем зашифрованный текст в файл 
    FILE *t;
	printf("\n\nPlease, enter a name of a file for the ciphered text: ");
	scanf("%s",nazv);
	int num2;
    if ((t=fopen(nazv,"w"))==NULL)
    {printf(" Owibka otkritija fajla!!!");
    getch();}
	else
	{
	num2=fwrite(shStr, sizeof(char), m, t);
	}
	fclose(t); 
	printf("The file is written down...\n");
	printf("\nPress any key...");

delete[] oStr;
delete[] key;
delete[] shStr;
    _getch();
	return 0;

}
FastDead2 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение>сортировка>запись theFEAR Помощь студентам 1 22.04.2009 09:33
Запись/чтение из файла (С++) alexov Общие вопросы C/C++ 15 18.01.2009 17:35
Запись в файл и чтение из него. Swool Общие вопросы C/C++ 8 26.08.2008 16:39
Запись и чтение файла... Altera Общие вопросы Delphi 5 06.05.2008 20:22