![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Fobos |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 9.2.2008 Где: Москва Репутация: нет Всего: нет |
Пишу программку которая должна отправлять письма, для авторизиции на почтовом сервере логин и паароль необходимо отправлять зашифрованным в base64-алгоритм. В чем собственно проблемка вроде нашел функцию для этого но никак не мгу заставить ее работать. Читал и MSDN там скупо написано, но вроде все правильно, вот код:
эта функция функция выполняется, но код возврата 1, т.е. ошибка. GetLastError() дает 13 ERROR_INVALID_DATA помогите пожалуйста кто знает в чем проблема |
|||
|
||||
Fobos |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 9.2.2008 Где: Москва Репутация: нет Всего: нет |
извиняюсь функция возвращает 0 а GetLastError() 13
|
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
Fobos, так у тя строка пустая, заполни ее чем-нибудь.
|
|||
|
||||
Fobos |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 9.2.2008 Где: Москва Репутация: нет Всего: нет |
Я немного не полностью написал. эта переменная m_from он через DDX получает значение это точно. Прикол в том что если написать вот так, то работать будет
WCHAR* str = L"hello this is a string"; CString m_from; BYTE* buf = new BYTE[200]; DWORD* pcbBinary = new DWORD; DWORD* pdwSkip = new DWORD; DWORD* pdwFlags = new DWORD; WCHAR* str = L"hello this is a string"; ret = CryptStringToBinary(str, 15, CRYPT_STRING_BASE64, buf, pcbBinary, pdwSkip, pdwFlags); то она работаьт будет. Я смотрел дизассемблером в обоих случаях передается просто адрес строки UNICODE, но работает только во втором. Подскажите в чем проблема. |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
Fobos, в дебаге смотрел что содержится в строке перед вызовом ф-ии? какой размер передается?
|
|||
|
||||
Fobos |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 9.2.2008 Где: Москва Репутация: нет Всего: нет |
Я же написал что проверял Олькой. В обоих случаях в функцию передается адрес строки, по этому адресу реально находится соответствующая строка(проверял). Размер я постоянный выставил. Но в первом случае не работает а во втором случае работает.
Получаются какие-то чудеса: если адрес строки находится в области где размещаются динамические переменные функция работает, а если адрес строки находится в области где находятся статические переменные то она не работает. Как такое может быть? |
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
Fobos |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 9.2.2008 Где: Москва Репутация: нет Всего: нет |
Да я и MSDN читал, все без толку..
|
|||
|
||||
vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
попробуй так |
|||
|
||||
Fobos |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 9.2.2008 Где: Москва Репутация: нет Всего: нет |
Не помогает никак
![]() |
|||
|
||||
blackswanny |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 13.5.2011 Репутация: нет Всего: нет |
аналогичная проблема
поставили задачу перенести ПО с одного сервера на другой, нашёл исходники одной DLL, выяснил, что проблема в CryptStringToBinary, возвращает ERROR_INVALID_DATA, на входе ключ такой же, как и на работающем сервере, в общем всё кажется одинаковым, но что-то не так |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
можно OpenSSL заюзать |
|||
|
||||
Modul |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 238 Регистрация: 17.2.2006 Репутация: нет Всего: нет |
...и можно найти исходники base64
![]() --------------------
I'll be back ! |
|||
|
||||
Amp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 3 Всего: 17 |
Эм, алгоритм на коленке реализуется за пол-часа.
|
|||
|
||||
ZVano |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 259 Регистрация: 11.12.2006 Где: Украина, Кривой Р ог Репутация: нет Всего: 4 |
У меня отлично работает этот код. Выковырял в нете.
-------------------- НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению. Гуглим "Как правильно задавать вопросы" |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |