MFC 中 LPBYTE 数据到 CString

发布于 2024-11-29 04:44:10 字数 389 浏览 0 评论 0原文

我正在使用 CryptProtectData 函数加密数据,并且获得 LPBYTE 格式的加密数据,我想将该数据保存到文件中,然后读回进行解密。

为了在文件中写入字符串,我使用以下一种方法将 LPBYTE 数据转换为 CString:

CString strEncrUName = (wchar_t *)encryptedUN;

我什至尝试过这个 如何从 BYTE 数组转换为MFC 中的 CString? 但它仍然不起作用。

使用的字符集是unicode。

提前致谢

I am encrypting data using CryptProtectData function and I am getting encrypted data in LPBYTE format, I want to save that data into a file and then read back for decryption.

In order to write string in file, I used following one to convert LPBYTE data to CString:

CString strEncrUName = (wchar_t *)encryptedUN;

I even tried this one How to convert from BYTE array to CString in MFC? but still it's not working.

Character set used is unicode.

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

扮仙女 2024-12-06 04:44:10

加密数据是原始字节的缓冲区,而不是字符。如果要将其转换为字符串,则必须以某种方式对其进行编码,例如将其转换为十六进制字符。

例如。字节 0xd5 变成 2 个字符:“D5”

循环遍历每个字节并将其转换为十六进制字符是留给读者的简单练习。

当然,读取文件后您必须将其转换回二进制。

您确定要将其保存到文本文件吗?您的另一个选择是将二进制加密数据保存到二进制文件:无需与字符串进行转换。

The encrypted data is a buffer of raw bytes, not characters. If you want to convert it to a string, you'll have to encode it somehow, such as by converting it to Hex chars.

eg. byte 0xd5 becomes 2 chars: "D5"

Looping through each byte and converting it to hex chars is an easy exercice left up to the reader.

Of course, you'll have to convert it back to binary after you read the file.

Are you sure you want to save it to a text file. Your other option is to save the binary encrypted data to a binary file: no need to convert to/from string.

情深缘浅 2024-12-06 04:44:10

如果您的指针表示以零结尾的字符串

LPBYTE pByte;

CString str(LPCSTR(pByte));

If your pointer represents zero terminated string

LPBYTE pByte;

CString str(LPCSTR(pByte));

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文