使用了这个API生成了RDP(远程桌面)文件里面的密码,如果用CryptUnprotectData来还原是能的到明文的。
但是把这密码写到RDP文件里面,却不能进行远程桌面连接,就是报象密码错误那样的错误。
但是把这密码写到RDP文件里面,却不能进行远程桌面连接,就是报象密码错误那样的错误。
解决方案 »
- 怎样才能学好MFC,这几天一直在做一个小游戏,突然感觉脑子里好乱!很烦躁
- 疑惑:修改RGB值得到的图像与先把RGB转换为其他色彩空间的图像再调亮度有和区别?
- 西安,超低价转卖自己的计算机书籍
- 有没有办法四边形透明,而其纹理不透明?
- ●用无文档视图结构打印预览时,多页时翻页为何"前一页"按钮永远是灰的?●
- 找遍CSDN没有答案.
- MFC中filecore.cpp文件中ASSERT出错
- 在vb中 DirectX的SetColorKey参数key为什么绿色(0,255,0)不能作为源关键色?
- vs2008环境下关于mfc对dbf文件的数据执行增加、删除、查询等操作
- 关于ado data contrl 控件的SetRecordSource()的用法的,谢谢指教
- MFC界面问题
- _RecordSetPtr.Open中的SQL语句,如果带有DECLARE声明变量便不能执行,求解
我生成密码的代码如下:
MakeUdpPsw(char * dest,char * sour) //必须确保dest的空间足够(一般大于500)
{
DATA_BLOB DataIn;
DATA_BLOB DataOut;
BYTE *pbDataInput =(BYTE *)sour;
DWORD cbDataInput =strlen(sour)*sizeof(char);
DataIn.pbData = pbDataInput;
DataIn.cbData = cbDataInput;
if(CryptProtectData(
&DataIn,
L"psw", // A description string
// to be included with the
// encrypted data.
NULL, // Optional entropy not used.
NULL, // Reserved.
NULL, // Pass NULL for the
// prompt structure.
0,
&DataOut))
{
printf("The encryption phase worked.\n");
int count=0;
while ( count <= (int)DataOut.cbData )
{
// 因为一个unsigned int 占32位
// 转换成成16进制要占两位
// 所以这里需要用%02
char t[3] = {0};
sprintf(t,"%02X",DataOut.pbData[count]);
printf("%02X",DataOut.pbData[count]);
strcat(dest,t);
count++;
}
return TRUE;
}
else
{
return FALSE;
}
}