Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Неизвестая проблема с передачей данных функции

55K
04 января 2010 года
RabiatoR
6 / / 04.01.2010
[INDENT]ОС: Microsoft Windows XP Professional[/INDENT][INDENT]СП: Embarcadero® C++Builder® 2010 Version 14.0.3513.24210[/INDENT]Здравствуйте уважаемые господа программисты :) я конечно не новичок в програмировании, но возник серьезный вопрос, который методом "проверь всё, переделай всё, сделай все более прямо", решить не удалось, задача простая а глюк жестокий, причом я так понял это 100% глюк.
Глюк собстевнно такой:
Я принимаю данные с сокета, взависимости от принятых данных создаю таблицу МД5 хэшэй, всего 32 Хэша сохраненный в структуре по имени
 
Код:
session_data{
    ...
    unsigned char data[256];
    unsigned int data_size;
    unsigned char szKeycodeTable[32][16];
    ...
}
дальше я отправляю пакет с данными в ответ, и когда принимаю данные вызываю функцию decode( &sd->data, sd->data_size );
Эта функция должна расшифровать принятые данные, если МД5 ключей ещо нет то использует константные значения.
Код:
void decode( void *ptr, unsigned int len ){
    crypt( ptr, len, sd->crypt_flag );
    return;
}

void crypt( void *ptr, unsigned int len, int flag ){
    if( flag == -1 ){
        DecodeDataRC4( (unsigned char *)ptr, len, RRS_DEFAULT_PWD_A );
        DecodeDataFC1( (unsigned char *)ptr, len, RRS_DEFAULT_PWD_B );
        DecodeDataRC6( (unsigned char *)ptr, len, RRS_DEFAULT_PWD_C );
    }else{
                          //debug( &sd->szKeycodeTable[flag], 16 );
        DecodeDataRC4( (unsigned char *)ptr, len, sd->szKeycodeTable[flag] );
        DecodeDataRC6( (unsigned char *)ptr, len, sd->szKeycodeTable[flag+16] );
    }
    return;
}

если флаг == -1 значит таблица пустая, все расшифрововается нормально, ежиле нет, то возникает проблема.

Дело в том что функция DecodeDataRC4 и DecodeDataRC6 получает в в третьем аргументе далеко не то что находится в sd->szKeycodeTable[...] а левые данные!
Если я вызываю перед вызовом DecodeDataRC4, функцию записи в файл данных (void debug( const void *ptr, unsigned int len );), то записовается в файл нужные данные(МД5 хэш) а если я записоваю данные после передачи их функции то получаю левые данные, и падение моей программы с выходом на ЦПУ! причом МД5 всегда разный хранится в sd->szKeycodeTable, а записовается после передачи всегда одна последовательность байт, после убирания в настройках проекта галочки Use runtime RTL... байты стали писаться другие)
[COLOR="Blue"]Что скажите господа?[/COLOR]
14
11 января 2010 года
Phodopus
3.3K / / 19.06.2008
Скажем выкладывайте код если хотите помощи.
1
11 января 2010 года
kot_
7.3K / / 20.01.2000
У него не получится. Ибо зобанен. Думаю пока тему можно закрыть.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог