myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
 
Ответить в данную темуНачать новую тему

> как сгенерировать овтетный ключ

Теги
Нет тегов для показа
Markiz
сообщение 18.1.2010, 23:32
Сообщение #1


Абсолютный новичок


Группа: Пользователи
Сообщений: 4
Регистрация: 18.1.2010
Пользователь №: 5 749
Спасибо сказали: 0 раз




Где же собственно распространяется открыто алгоритм генерации $key - ответа на $lock? Искал, искал, не нашел.

Если есть выбор мне на C#. Но могу перевести с любого другого языка\описания big_smile.gif
Go to the top of the page
+Quote Post
Setuper
сообщение 19.1.2010, 1:31
Сообщение #2


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




http://mydc.ru/index.html?showtopic=915&am...ost&p=19477
Go to the top of the page
+Quote Post
Markiz
сообщение 20.1.2010, 20:50
Сообщение #3


Абсолютный новичок


Группа: Пользователи
Сообщений: 4
Регистрация: 18.1.2010
Пользователь №: 5 749
Спасибо сказали: 0 раз




Спасибо за ответ big_smile.gif Наваял на C# вставьте в фак, может кому пригодится. И было бы совсем хорошо если бы в описании протокола в постах про $lock и $key была ссылка на пост с функциями.

Еще раз спасибо за помощь big_smile.gif
Код
    private string lock2key(string str_lock)
        {
            byte[] arr_key = new byte[str_lock.Length];
            int i;
            for (i = 1; i < str_lock.Length; ++i)
                arr_key[i] = (byte)(str_lock[i] ^ str_lock[i - 1]);
            arr_key[0] = (byte)(str_lock[0] ^ str_lock[str_lock.Length - 1] ^ str_lock[str_lock.Length - 2] ^ 5);

            return Encoding.ASCII.GetString(arr_key);
        }
Go to the top of the page
+Quote Post
Setuper
сообщение 20.1.2010, 20:55
Сообщение #4


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




А где описание функции Encoding.ASCII.GetString ?
Go to the top of the page
+Quote Post
Markiz
сообщение 20.1.2010, 21:51
Сообщение #5


Абсолютный новичок


Группа: Пользователи
Сообщений: 4
Регистрация: 18.1.2010
Пользователь №: 5 749
Спасибо сказали: 0 раз




Там же где и всегда, в MSDN big_smile.gif

http://msdn.microsoft.com/ru-ru/library/sy....getstring.aspx

Внес коррективы. не надо делать byte[] arr_key = new byte[str_lock.Length+1];

Это приводит к тому что последний символ получается пустой. Исправил. Кстати эта ошибка из сишной функции переехала, я с ней сверял результат. Думал так и положено что в конце ноль.
Go to the top of the page
+Quote Post
Setuper
сообщение 20.1.2010, 23:11
Сообщение #6


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




В языке си переменная типа char* всегда оканчивается символом \0.

Что касается написанной функции, то я не уверен в том, что она всегда будет работать правильно, так как в ней отсутствует функция DCN экранирования. Собственно поэтому я и просил привести описание функции Encoding.ASCII.GetString, надеясь что в описании этой функции есть DCN экранирование.
Go to the top of the page
+Quote Post
mariner
сообщение 21.1.2010, 1:41
Сообщение #7


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 875
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




Цитата(Setuper @ 20.1.2010, 23:11) *
В языке си переменная типа char* всегда оканчивается символом \0.


Не всегда. Все зависит от того, как задирать строку. Возможны и не нультерминированные строки. Кстати, string.h с ними вполне справляется
Go to the top of the page
+Quote Post
Setuper
сообщение 21.1.2010, 1:57
Сообщение #8


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Что значит не всегда? И что значит задирать строку?
Прочитай что я написал. Я говорю про конкретный тип char*.
Библиотека string содержит не столько тип, как целый класс для работы со строками и естественно в строке типа string отсутствует на конце символ \0. Причина этому то, что в строках string есть функция для возвращения длины строки, что нельзя сказать о типе char*, где символ \0 на конце и указывает нам где заканчивается строка, и всё что следует за этим символом является мусором, который может остаться от предыдущих строк в данном буфере.

Поэтому прекращай оффтопить big_smile.gif
Go to the top of the page
+Quote Post
mariner
сообщение 21.1.2010, 2:03
Сообщение #9


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 875
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 220 раз




>И что значит забирать строку?

Selffix

>char*

мне тебе пример накатать? =) Не уж то и поспорить нельзя, если ты делаешь спорные утверждения?
Go to the top of the page
+Quote Post
Markiz
сообщение 21.1.2010, 13:03
Сообщение #10


Абсолютный новичок


Группа: Пользователи
Сообщений: 4
Регистрация: 18.1.2010
Пользователь №: 5 749
Спасибо сказали: 0 раз




В C# строки не требуют нультерминирования. Это же не последовательность байт, как в Си или Делфи, а объект, который сам о себе позаботится. Посему он символ \0 считает частью строки и вместе со всеми отправляет серверу, что не гуд, т.к. сервер этот символ не переваривает и обижается. Поэтому для С# +1 в размере создаваемого массива ставить нельзя.

По поводу DCN экранирования, это что? Выборка яндекса мне ничего не дала.
Go to the top of the page
+Quote Post
Setuper
сообщение 21.1.2010, 13:15
Сообщение #11


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




По NMDC протоколу символы с кодами 0, 5, 36, 96, 124 и 126 должны быть заменены, соответственно, на /%DCN000%/, /%DCN005%/, /%DCN036%/, /%DCN096%/, /%DCN124%/ и /%DCN126%/.
Go to the top of the page
+Quote Post

Ответить в данную темуНачать новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Выполним дизайн/вёрстку/сайт под ключ
создание сайтов
5 irbisart.ru 8 138 3.3.2011, 19:49 Посл. сообщение: Otshelnik-Fm

 



RSS Сейчас: 23.11.2024, 12:22