Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шифрование в с++, Шифрование в с++ 
V
    Опции темы
Инк131
Дата 20.4.2009, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 26.3.2009

Репутация: нет
Всего: нет



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

Код

 #include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int WriteFile(char *wstring) //Функция записи в файл
{
   FILE *wrfile; // определяем переменную
   wrfile=fopen("result.txt","a"); // открываем файл для дозаписи 
   fputs(wstring,wrfile); // записываем в него переменную wstring
   fputs("\n",wrfile); // записываем в файл переход на новую строку
   fclose(wrfile); // закрываем файл
}

void SearchWords(char *find_string, char *y) //Функция фифрования, find_string - строка текста,
{
   char zifr[255]=" "; //определяем переменную
   int i;
   int j;
   int k=0;
   x1:;
   for (i=k;i<strlen(find_string);i++) //цикл от k до конца длины строки
   {
      zifr [i-k]=find_string[i]; // заполняем массив по одному символу
      if (find_string[i]=='.' || find_string[i]==' ' || find_string[i]=='!' || find_string[i]=='?') // если в строчке встретился символы ! ? . или пробел то:
      {
        for(int j=0;zifr[j];j++)
           {
             switch(zifr[j])
             {
               case 'a': case 'A': zifr[j]='U'; break;
               case 'b': case 'B': zifr[j]='R'; break; здесь пытаюсь шифровать, но видимо неправильно
               case 'c': case 'C': zifr[j]='T'; break;
               case 'd': case 'D': zifr[j]='F'; break;

               default: ;
             }
          WriteFile(zifr); // то пишем в файл 
         }
         if ((i+1) == strlen(find_string)){break;} // если встретили конец строки, то обрываем работу и дальше будет обрабатываться следующая строчка
         else // иначе (если не конец строки)
         {
          k=i+1; // присваиваем k следующий номер символа (например если в строке несколько предлогов, то берем следующий символ после .?!)
          strncpy(zifr," ",255); // очищаем переменную от предыдущего значения предложения
          goto x1;
         }
       }
   }
}

int main()
{
   FILE *f;       //выделение памяти для хранения данных
   FILE *wrf;
   char ch[255];
   char s[255];
   if ((f=fopen("text.txt","r"))==NULL) // открываем файл для чтения и если его нет то пишем что его нет
   {
      cout<<"File text.txt not found";
      getch();
      return(1);
   }

   if ((wrf=fopen("result.txt","w"))==NULL) // открываем файл и очищаем его от предыдущих записей (чтобы каждый раз не очищать его вручную), и если его нет, то пишем об этом
   {
      cout<<"File result.txt not found";
      getch();
      return(1);
   }
   fclose(wrf); // закрываем файл под переменной wrf

   cout<<"Vvedite password: ";
   cin>>s;

   while (!feof(f)) // до тех пор пока не встретися конец файла под переменной f (ф-я feof - определяет конец файла)
   {
    fgets(ch,255,f); // берем строку длиной 255 символов из файла, который под переменной f (строки идут по порядку)
       SearchWords(ch,s); // подставляем в ф-ю SearchWords введенную фразу для шифрования и собственно саму строку под переменной ch
   }

   fclose(f); // закрываем файл с переменной f

   {
   while (!feof(wrf))//функция обнаруживает конец файла
   cout<<"Cmotrite file result.txt";
   getch();

   fclose(wrf); //Закрываем все потоки файлов.

   wrf = fopen("result.txt","w"); //Открываем файл для записи результата
   char string[10];

   fputs(string,wrf); //Записываем результат.
   fclose(wrf);  //закрываем файл
 }
}


Это сообщение отредактировал(а) Инк131 - 20.4.2009, 20:16
PM MAIL   Вверх
zim22
Дата 20.4.2009, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



поменяйте
Код

void WriteFile(char *wstring)


жесть. понимаю, без goto никак.
Код

goto x1;


у этой метки дефолт наверное большой сакральный смысл
Код

default: ;


Это сообщение отредактировал(а) zim22 - 20.4.2009, 20:31


--------------------
PM MAIL   Вверх
Инк131
Дата 20.4.2009, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 26.3.2009

Репутация: нет
Всего: нет



Поменял, спасибо, стало одним предупреждением меньше. А по поводу шифрования ничего не подскажите?

PM MAIL   Вверх
zim22
Дата 20.4.2009, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



это ваше шифрование? менять 4 буквы на другие 4 буквы?
Код

case 'a': case 'A': zifr[j]='U'; break;
case 'b': case 'B': zifr[j]='R'; break; здесь пытаюсь шифровать, но видимо неправильно
case 'c': case 'C': zifr[j]='T'; break;
case 'd': case 'D': zifr[j]='F'; break;


Это сообщение отредактировал(а) zim22 - 20.4.2009, 20:34


--------------------
PM MAIL   Вверх
Инк131
Дата 20.4.2009, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 26.3.2009

Репутация: нет
Всего: нет



а как сделать чтобы буквы в тексте менялись на буквы ключа? я думал заменой описать все буквы, понимаю что это нерационально, поэтому описал 4  smile 
PM MAIL   Вверх
zim22
Дата 20.4.2009, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Инк131, аналогичная тема здесь


--------------------
PM MAIL   Вверх
Инк131
Дата 20.4.2009, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 26.3.2009

Репутация: нет
Всего: нет



спасибо, щас буду разбираться  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0494 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.