Данные LPBYTE в CString в MFC - PullRequest
       31

Данные LPBYTE в CString в MFC

0 голосов
/ 11 августа 2011

Я шифрую данные с помощью функции CryptProtectData, и я получаю зашифрованные данные в формате LPBYTE, я хочу сохранить эти данные в файл и затем прочитать обратно для дешифрования.

Для записи строки в файл,Я использовал следующий для преобразования данных LPBYTE в CString:

CString strEncrUName = (wchar_t *) encryptedUN;

Я даже попробовал этот Как преобразовать из массива BYTE в CString в MFC? но все равно не работает.

Используется набор символов в кодировке Unicode.

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Зашифрованные данные - это буфер необработанных байтов, а не символов.Если вы хотите преобразовать его в строку, вам придется каким-то образом его кодировать, например, преобразовав его в шестнадцатеричные символы.

например.Байт 0xd5 становится 2-мя символами: «D5»

Циклический просмотр каждого байта и преобразование его в шестнадцатеричные символы - простое упражнение, оставленное читателю.

Конечно, вам придется преобразоватьпосле прочтения файла он возвращается в двоичный формат.

Вы уверены, что хотите сохранить его в текстовом файле.Другой вариант - сохранить двоичные зашифрованные данные в двоичный файл: нет необходимости преобразовывать в / из строки.

0 голосов
/ 11 августа 2011

Если ваш указатель представляет строку с нулем в конце

LPBYTE pByte;

CString str (LPCSTR (pByte));

...