• XSS.stack #1 – первый литературный журнал от юзеров форума

Base64

ExitCode

floppy-диск
Пользователь
Регистрация
03.06.2019
Сообщения
1
Реакции
0
Имеется следующий код :

C:
LPWSTR Base64Encode(LPWSTR lpString)
{
    DWORD dwLengthNeeded = 0;
    if (CryptBinaryToStringW((BYTE*)lpString, sizeof(lpString), CRYPT_STRING_BASE64, NULL, &dwLengthNeeded))
    {
        LPWSTR lpEncString = (LPWSTR)LocalAlloc(0, sizeof(WCHAR) * (dwLengthNeeded + 1));
        if (CryptBinaryToStringW((BYTE*)lpString, sizeof(lpString), CRYPT_STRING_BASE64, lpEncString, &dwLengthNeeded))
        {  
            return lpEncString;
        }
    }
    return NULL;
}

Но он возвращает некорректный результат. С анси функциями все в порядке, с их юникод аналогами - лажа. Подскажите пожалуйста, в чём моя ошибка.
 
я не знаю си, но кажется вторым параметром в CryptBinaryToStringW должно быть что-то типа lstrlenW(lpString) а не sizeof(lpString)
или strlen(lpString)

sizeof показывает размер типа переменной
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх