как сгенерировать овтетный ключ |
Здравствуйте, гость ( Вход | Регистрация )
как сгенерировать овтетный ключ |
18.1.2010, 23:32
Сообщение
#1
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 4 Регистрация: 18.1.2010 Пользователь №: 5 749 Спасибо сказали: 0 раз |
Где же собственно распространяется открыто алгоритм генерации $key - ответа на $lock? Искал, искал, не нашел.
Если есть выбор мне на C#. Но могу перевести с любого другого языка\описания |
|
|
19.1.2010, 1:31
Сообщение
#2
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
|
|
|
20.1.2010, 20:50
Сообщение
#3
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 4 Регистрация: 18.1.2010 Пользователь №: 5 749 Спасибо сказали: 0 раз |
Спасибо за ответ Наваял на C# вставьте в фак, может кому пригодится. И было бы совсем хорошо если бы в описании протокола в постах про $lock и $key была ссылка на пост с функциями.
Еще раз спасибо за помощь Код 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); } |
|
|
20.1.2010, 20:55
Сообщение
#4
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
А где описание функции Encoding.ASCII.GetString ?
|
|
|
20.1.2010, 21:51
Сообщение
#5
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 4 Регистрация: 18.1.2010 Пользователь №: 5 749 Спасибо сказали: 0 раз |
Там же где и всегда, в MSDN
Внес коррективы. не надо делать byte[] arr_key = new byte[str_lock.Length+1]; Это приводит к тому что последний символ получается пустой. Исправил. Кстати эта ошибка из сишной функции переехала, я с ней сверял результат. Думал так и положено что в конце ноль. |
|
|
20.1.2010, 23:11
Сообщение
#6
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
В языке си переменная типа char* всегда оканчивается символом \0.
Что касается написанной функции, то я не уверен в том, что она всегда будет работать правильно, так как в ней отсутствует функция DCN экранирования. Собственно поэтому я и просил привести описание функции Encoding.ASCII.GetString, надеясь что в описании этой функции есть DCN экранирование. |
|
|
21.1.2010, 1:41
Сообщение
#7
|
|
Местная ТехПоддержка Группа: Администраторы Сообщений: 1 875 Регистрация: 18.7.2008 Из: Моск. Обл, г. королев, район Болшево Пользователь №: 221 Спасибо сказали: 220 раз |
|
|
|
21.1.2010, 1:57
Сообщение
#8
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Что значит не всегда? И что значит задирать строку?
Прочитай что я написал. Я говорю про конкретный тип char*. Библиотека string содержит не столько тип, как целый класс для работы со строками и естественно в строке типа string отсутствует на конце символ \0. Причина этому то, что в строках string есть функция для возвращения длины строки, что нельзя сказать о типе char*, где символ \0 на конце и указывает нам где заканчивается строка, и всё что следует за этим символом является мусором, который может остаться от предыдущих строк в данном буфере. Поэтому прекращай оффтопить |
|
|
21.1.2010, 2:03
Сообщение
#9
|
|
Местная ТехПоддержка Группа: Администраторы Сообщений: 1 875 Регистрация: 18.7.2008 Из: Моск. Обл, г. королев, район Болшево Пользователь №: 221 Спасибо сказали: 220 раз |
>И что значит забирать строку?
Selffix >char* мне тебе пример накатать? =) Не уж то и поспорить нельзя, если ты делаешь спорные утверждения? |
|
|
21.1.2010, 13:03
Сообщение
#10
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 4 Регистрация: 18.1.2010 Пользователь №: 5 749 Спасибо сказали: 0 раз |
В C# строки не требуют нультерминирования. Это же не последовательность байт, как в Си или Делфи, а объект, который сам о себе позаботится. Посему он символ \0 считает частью строки и вместе со всеми отправляет серверу, что не гуд, т.к. сервер этот символ не переваривает и обижается. Поэтому для С# +1 в размере создаваемого массива ставить нельзя.
По поводу DCN экранирования, это что? Выборка яндекса мне ничего не дала. |
|
|
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%/.
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
Выполним дизайн/вёрстку/сайт под ключ создание сайтов |
5 | irbisart.ru | 8 166 | 3.3.2011, 19:49 Посл. сообщение: Otshelnik-Fm |
|
Сейчас: 27.11.2024, 1:05 |