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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шифрование текста алгоритмом Цезаря (на С), Не могу свпомнить 2 функции 
:(
    Опции темы
bsa
Дата 13.8.2006, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Сорри. Ответил на уже закрытый вопрос.  smile 

Это сообщение отредактировал(а) bsa - 13.8.2006, 22:24
PM   Вверх
Mayk
Дата 14.8.2006, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

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



Цитата(zkv @  14.8.2006,  01:05 Найти цитируемый пост)
Не слишком весело просматривать даже 2^32 фрагментов (только для int)  

Цитата(En_t_end @  13.8.2006,  22:43 Найти цитируемый пост)
нет, все равно если щифровать символ ASCII ты его хоть на сколько раз увеличивай/уменьшай получается, что диапазон шифрованного символа от 0 до 255, то есть 255,254 -переборов. Это как по круговой арене бегать, или как 480 градусов в радианы переводить smile Из-за мною упомянутого битового переполнения даже ключ вида 4230000 при добавлении его к байту ASCII даст новый байт, в который может влезть число от 0-255, а ключ можно подобрать, хоть и не 4230000, но тоже верный в диапазоне от 1-255.

Иными словами в шифрованном файле будет не более 256 уникальных значений int'а (а реально даже меньше).

Цитата(Pilligrim @  14.8.2006,  01:13 Найти цитируемый пост)
это я просто со сложением сказал. Пусть сделает по какой-л. формуле: синусы, косинусы. Выбор огромен. И взламывать будет дольше. 

до тех пор пока каждый символ X преобразуется в Y практическая польза от такого шифрования более чем сомнительна.

хинт для  расшифровки Υ в Χ   (имея преобразованный файл и не имея алгоритма преобразования X в Y). 
наиболее часто встречащаяся буква навряд ли будет твердым знаком. 
Таблицы показывающие вероятность появления каждой буквы в тексте можно или найти в сети, или получить самостоятельно, подсчитав кол-во букв в вашей любимой книге 'Война и Мир'.

хинт для расшифровки Υ в Χ (имея алгоритм и зашифрованный текст)
шифруем 'абвгдеёжзи...юяАБВГД...Я' и получаем таблицу соответствий русских букв и шифрованных букв. Далее дело техники.
Хотя бы tr'ом прогнать.  




--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
zkv
Дата 14.8.2006, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

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



Цитата

Цитата(zkv @  14.8.2006,  01:05 Найти цитируемый пост)
Не слишком весело просматривать даже 2^32 фрагментов (только для int)  


Вообще, я имел в виду случай такого рода  (моя вина - не пояснил)
Цитата(Pilligrim @ 13.8.2006,  19:55)
А можно так:
Код

char c;
int d,
     password;//пароль пользователя
FILE* in,//незашифрованно
          out;//зашифрованное
in = fopen("in.txt","r");//например
out = fopen("out.txt","r");//например
c='b';
while(c!='\0')
     {scanf(file,"%c",c);
       d = int(c) + password;
       fwrite(NULL,4,1,out);
     }


Вот это уж взламывать будет подольше пап-хакер)))


и по-моему, здесь будет порядка 256^sizeof(int) вариантов перебора, и то при условии, 
что мы знаем о представлении каждого символа sizeof(int)  байтами. 
Возможно я ошибаюсь, поправте меня если так.
 
P.S.         С En_t_end я полностью согласен.
PM MAIL   Вверх
sergejzr
Дата 14.8.2006, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Код

#include <iostream.h>
#include <string>
void encode(char*message, int len_message, char *key, int len_key,char* buffer_of_sufficient_length)
{
    int y=0,i=0;
    for(i=0;i<len_message;i++,y++)
    {
     if(y>=len_key)
         y=0;
     buffer_of_sufficient_length[i]=message[i]^key[y];
    }
    buffer_of_sufficient_length[i]=0;
}

int main()
{
char* messaga="Klara u Karla ukrala korally";
int len_message=strlen(messaga);
char *key="A Karl u Klary klarnett ukral";
int len_key=strlen(key);
char buffer[1024];


encode(messaga,len_message,key,len_key,buffer);
cout<<"encoded: "<<buffer<<endl;
encode(buffer,len_message,key,len_key,buffer);
cout<<"decoded: "<<buffer<<endl;
return 0;
}


Не в тему, но пускай здесь будет, а то код потеряется  в дебрях моего ЖД. Простенький алгоритм. Для данного алгоритма если длинна ключа>=длине длинне текста, расшифровать его будет невозможно ничем. Правда конечно надо один и тот же ключ как можно реже использовать.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
ДобренькийПапаша
Дата 13.5.2007, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Возникло пару вопросов по поводу вот последнего кода, который скинул sergejzr.

Объясните пожалуйста, непросвещённому, как работает функция  encode, а конкретнее, как работает 10-я строка? Там знак "^", что он делает, и почему при кодировке какие-то символы странные берутся? Ну, а если, опишите функцию немного подробней, буду оч благодарен.

И вообще, это всё ещё шифр Цезаря, или что?


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
sergejzr
Дата 13.5.2007, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Цитата(ДобренькийПапаша @  13.5.2007,  08:01 Найти цитируемый пост)
как работает 10-я строка? Там знак "^", что он делает,

Это оператор XOR - побитовое сложение. И это уже не Цезарь. Цезарь легко взломать, a XOR при достаточной длине ключа- невозможно.
Поэтому и символы "странные" т.к без правилъного ключа шифровка может быть чем угодно.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Ln78
Дата 13.5.2007, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



sergejzr, если не имеется в виду применение одноразового блокнота, то XOR - игрушечный алгоритм. Цитата из Брюса Шнайера: "Конечно, алгоритм XOR может помешать вашей младшей сестре прочитать ваши файлы, но настоящего криптоаналитика он задержит лишь на несколько минут"
PM MAIL   Вверх
sergejzr
Дата 13.5.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Ln78, читайте внимательней
Цитата(sergejzr @  14.8.2006,  10:07 Найти цитируемый пост)
Для данного алгоритма если длинна ключа>=длине длинне текста, расшифровать его будет невозможно ничем.

Т.е 
Цитата(Ln78 @  13.5.2007,  11:24 Найти цитируемый пост)
применение одноразового блокнота


Добавлено через 10 минут и 22 секунды
А как ломать XOR описано здесь http://forum.vingrad.ru/index.php?showtopi...st&p=214032
В принципе, ключ с длиной 1/2 мессаги ещё достаточно надёжен.



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Ln78
Дата 13.5.2007, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



sergejzr, меня немного смутила категоричность Вашего предыдущего поста о невозможности. Прочитав ссылку, понял Вы понимаете, о чём говорите. А с уточнением о необходимой длине и равновероятности гаммы - получаем именно одноразовый блокнот. 
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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