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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2009, 14:08   #1
Руслантус
Наркоман самоучка
Форумчанин
 
Аватар для Руслантус
 
Регистрация: 22.07.2007
Сообщений: 276
Вопрос Расшифровать текст зная 1 слово.

Здравствуйте!
Мне охота узнать, каким способом решаются задачки вот такого типа:
Расшифровать текст, находящийся в ****.txt файле. Известны первые 12 символов (пример - “Поздравляем!”).
Данная задача была у меня на олимпиаде, и решить я её не смог т.к. с подобным вообще не сталкивался.
Говорили, что данную задачу нужно решать с использованием маски и какой-то стандартной библиотечной функции.
#include <мозг.h>
Руслантус вне форума Ответить с цитированием
Старый 27.02.2009, 15:19   #2
theos
Форумчанин
 
Аватар для theos
 
Регистрация: 10.12.2007
Сообщений: 158
По умолчанию

Хоть что-то известно о способе шифрования?

Обычным ключём что ли? Решение всё равно не будет однозначным если не знать например длину ключа. Хотя можно написать программу, которая будет на выходе давать несколько вариантов, один из которых с большой вероятностью верен. Если там осмысленный текст, это уже визуально определяется.
theos вне форума Ответить с цитированием
Старый 27.02.2009, 15:48   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Даже если просто заксорить текст с ключем длинной, скажем, 20-30 символов, то простого "Поздравляем!", вроде как, недостаточно (а ведь это программа еще должна "понять", что текст именно заксорен).

Вот небольшой пример:
Программа для шифрования файла:
Код:
#include <iostream>
#include <fstream>
using namespace std;

int main(){
ifstream inp;
ofstream outp;
unsigned char c;
int k=2;
inp.open("file.txt",ios::binary);
outp.open("file_out.txt",ios::binary);
while(inp.good())
 {
  c = inp.get();
  if(inp.eof()) break;
  c = (c<256-k) ? c+k : 256-c+k;
  c ^= 'x';
  outp.put(c);
 }
inp.close();
outp.close();

return 0;
}
И для дешифровки (если известен метод, но неизвестны числа):
Код:
#include <iostream>
#include <fstream>
#include <conio.h>
#include <string.h>
using namespace std;

int main(){
ifstream inp;
ofstream outp;
int i,k;
unsigned char c,ch,tc;
char str[15],str2[15];
bool fl;
inp.open("file_out.txt",ios::binary);
outp.open("file_2.txt",ios::binary);
cout<<"Enter string:"<<endl;
gets(str);
inp.getline(str2,strlen(str));
inp.close();
inp.clear();
inp.open("file_out.txt",ios::binary);

//-----

for(i=0; i<=200; i++)
 {
  for(c=1;c<255; c++)
   {
     fl = true;
    for(k=0;k<strlen(str2);k++)
     {
      ch = (str[k]<256-i) ? str[k]+i : 256-str[k]+i;
      ch ^= c;

       if(ch!=str2[k])
       {
        fl = false;
        break;
       }
     }
     if(fl) break;
   }
  if(fl) break;
 }

//-----
if(fl)
 {
  while(inp.good())
   {
    tc = inp.get();
    if(inp.eof()) break;
    tc ^= c;
    tc = (tc>i-1) ? tc-i : 256-i;
    outp.put(tc);
   }
  cout<<endl<<"Complete!"<<endl;
 }
else cout<<"Error!"<<endl;
inp.close();
outp.close();

getch();
return 0;
}
Содержимое файла "file.txt", например:
Код:
Good work! This is test. This is test!
Шифруем, затем запускаем вторую программу и вводим, допустим, "Good work".

Но, как уже сказал theos, нужно знать метод шифрования.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 27.02.2009, 17:31   #4
Руслантус
Наркоман самоучка
Форумчанин
 
Аватар для Руслантус
 
Регистрация: 22.07.2007
Сообщений: 276
По умолчанию

Про шифр не было ни слова. Единственное, что сказали про шифр, так это, то, что он сильно мудрёный какой-то.
Это задание сделал 1 человек, как рас используя максу расшифрованного слова и какую-то Сишную стандартную функцию. А какой-то мазохист, всё расшифровал вручную).

Sazary Спасибо за код!
#include <мозг.h>
Руслантус вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Узнать угол зная X и Y Dj_smart Общие вопросы Delphi 12 12.05.2009 05:09
Товарищи программисты помогите расшифровать оператор scibern Общие вопросы Delphi 3 11.01.2009 03:16
Помогите расшифровать оператор scibern Общие вопросы C/C++ 7 11.01.2009 01:34
Как узнать какой текст выделен в текст поле mogul82 JavaScript, Ajax 2 02.11.2008 16:32
Можно ли его расшифровать? DenCraft Фриланс 4 24.02.2008 01:19