有谁知道为什么这段代码不起作用?
#include "stdafx.h"
#include <windows.h>
#include <WinCrypt.h>
int _tmain(int argc, _TCHAR* argv[])
{
wchar_t *bin = TEXT("ProductID:1233===>55555");
BYTE out2[1000];
DWORD olen;
olen = 1000;
if (CryptStringToBinary(bin, 0, 1, out2, &olen, 0, 0) == 0)
{
wprintf(TEXT("Failure\n"));
}
else
{
//wprintf(TEXT("rn%s\n"),out2);
wprintf(TEXT("Success\n"));
}
system("pause");
return 0;
}
非常感谢你!
汤姆
答案 0 :(得分:1)
因为您指定的长度(参数2)为0?
修改:为了在下面的评论中澄清我们的最终解决方案,原始问题中的代码(自编辑后)包含两个错误:
CryptBinaryToString
而不是CryptStringToBinary
。由于将第二个参数中的0传递给CryptBinaryToString
无效,因此该函数失败。CRYPT_STRING_BASE64
。由于要加密的字符串不在base 64中(它包含无效字符,如':'),因此该函数失败。通常,传递原始值而不是使用现有定义(例如CRYPT_STRING_BASE64
)并不是一个好主意。