2011-08-11 116 views
0

我使用CryptProtectData函數對數據進行加密,並以LPBYTE格式獲取加密數據,我想將該數據保存到文件中,然後回讀解密。LPBYTE數據轉換爲MFC中的CString

爲了寫入在文件串中,我使用以下之一來LPBYTE數據轉換爲CString的:

CString的strEncrUName =(wchar_t的*)encryptedUN;

我甚至試過這一個How to convert from BYTE array to CString in MFC?但仍然無法正常工作。

使用的字符集是unicode。

在此先感謝

回答

1

加密數據是原始字節的緩衝區,而不是字符。如果您想將其轉換爲字符串,您必須以某種方式對其進行編碼,例如將其轉換爲十六進制字符。

例如。字節0xd5變成2個字符:「D5」

循環遍歷每個字節並將其轉換爲十六進制字符是一個容易的行爲留給讀者。

當然,您必須在讀取文件後將其轉換回二進制文件。

是否確定要將其保存爲文本文件?另一種選擇是將二進制加密數據保存到二進制文件中:不需要將字符串轉換爲/從字符串轉換。

-1

如果您的指針指向零結尾的字符串

LPBYTE PBYTE;

CString str(LPCSTR(pByte));