Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > С/С++
Перезагрузить страницу XOR как правильно с ним работать
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
ravmad ravmad вне форума
Новичок
 
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 01.04.2009
По умолчанию XOR как правильно с ним работать - 28.05.2009, 16:22

Код:
void code(char* cInf,char* cKey,char* cRes)
{unsigned int a,b;
a=0;
while(cInf[a])
{b=0;
while(cKey[b])
{cRes[a]^=(cKey[b]+(a*b));// Хэширует данные XOR'ом
b++;}
a++;}
}
Функция хэширует данные
не могу понять вот эту троку
Код:
cRes[a]^=(cKey[b]+(a*b))
^ -для чего служит этот символ
и почему к сKey[b] прибавляют (a*b)
Ответить с цитированием
  (#2 (permalink)) Старый
Jonano Jonano вне форума
Специалист
 
Аватар для Jonano
 
Сообщений: 3,541
Сказал(а) спасибо: 2
Поблагодарили 14 раз(а) в 14 сообщениях
Регистрация: 19.04.2005
По умолчанию 28.05.2009, 16:52

^ - это и есть оператор исключающего ИЛИ
Ответить с цитированием
  (#3 (permalink)) Старый
ravmad ravmad вне форума
Новичок
 
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 01.04.2009
По умолчанию 29.05.2009, 17:49

Jonano спасибо
почему к сKey[b] прибавляют (a*b)
Ответить с цитированием
  (#4 (permalink)) Старый
Jonano Jonano вне форума
Специалист
 
Аватар для Jonano
 
Сообщений: 3,541
Сказал(а) спасибо: 2
Поблагодарили 14 раз(а) в 14 сообщениях
Регистрация: 19.04.2005
По умолчанию 29.05.2009, 18:49

Откуда я знаю. Предусмотрено алгоритмом наверно )
Ответить с цитированием
  (#5 (permalink)) Старый
deckard deckard вне форума
Member
 
Сообщений: 81
Сказал(а) спасибо: 0
Поблагодарили 7 раз(а) в 7 сообщениях
Регистрация: 04.03.2008
По умолчанию 03.06.2009, 00:36

Это попытка (неверная!) зашифровать строку по ключу.

char* cInf,char* cKey,char* cRes
cInf - это некие данные (текст)
cKey - это пароль(текст), например "PAROL",0
cRes - результат щифрования
Допустим
code("ETO DLINNI TEXT","PAROL",char* cRes)
возвращает такой результат
Код:
cRes[0]=cInf[0]; // Внимание - этого нет в предложенной программе, надо уточнить, что на самом деле происходит
cRes[0]=CRes[0] ^ ('P' + (unsigned char)((a*b) & 255)); // видите разницу ? А иначе в выражении переменные разных типов char и unsigned int
cRes[0]=CRes[0] ^ ('A' + (unsigned char)((a*b) & 255));
cRes[0]=CRes[0] ^ ('R' + (unsigned char)((a*b) & 255));
cRes[0]=CRes[0] ^ ('O' + (unsigned char)((a*b) & 255));
cRes[0]=CRes[0] ^ ('L' + (unsigned char)((a*b) & 255));
// т е "шифруем" Насчет расстановки скобок возможны варианты, в зависимости от алгоритма
//
cRes[1]=cInf[1];
// и т д
На самом деле - исходный пример не верный,
Он предполагает, что строки оканчиваются байтом 0, отсюда и while(cInf[a]) и т д,
но в зашифрованной строке нули могут появляться в результате шифровки где угодно.
И вообще, лучше использовать unsigned char, а не char. Иначе с русским языком будут проблемы.
Короче, слишком много ошибок в оригинальном примере. Чтобы бросаться такими словами, как "хэшируем"
Ответить с цитированием
Ads.
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно работать в VBA dutch69 Visual Basic 1 09.06.2011 17:47
Как правильно работать с VBA Oksi4ka Visual Basic 0 20.05.2011 12:54
Как правильно работать на php Илья Агарков Вопросы начинающих программистов 0 28.03.2011 12:49
Как правильно работать с Dev-Cpp Hagen С/С++ 0 04.12.2007 03:28
MMX как правильно работать SpLove Assembler 1 03.12.2006 14:46
Как правильно работать с eVC++ fatboy Windows CE 15 31.03.2006 20:25
RIL как правильно с ним работать ankazakov Windows CE 0 09.03.2006 12:33
Как правильно работать с cgi x5u1t DHTML, JavaScript, VBScript 2 26.12.2005 01:43
Как правильно работать в Dev-C++ DSD Мультиплатформенные библиотеки 1 14.09.2005 12:58
Как правильно работать с LPT Anton S Железо. Написание драйверов 4 04.06.2005 04:15
Как правильно работать с lsp Anonymous Visual C++ 0 20.08.2003 20:32
Как правильно работать с Ant Anonymous Java 2 23.12.2002 16:26



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов