2011-08-11 198 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));