小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

RDP密碼加密算法

 左目右于 2012-05-07

RDP密碼加密算法

2012-03-08

無事瞎搞,希望做個(gè)工具自動(dòng)遠(yuǎn)程登錄,簡單看了下,Windows遠(yuǎn)程登錄使用的是RDP.exe,該文件關(guān)聯(lián)一個(gè)rdp后綴的文件,rdp文件僅僅為簡單的配置文件,相信大家用rdp之后,在我的文檔里面可以看到,用文本編輯器打開看看,很簡單,我就不說明啦。

這里面最要緊的是對(duì)密碼的加密,看了半天都不太像常用的加密方式,什么MD5,SHA,CRC,BASE64等等。而且貌似字符串很長的樣子,好,我們需要重點(diǎn)關(guān)注如何生成這個(gè)字符串。原來WinAPI中已經(jīng)有加解密的函數(shù)來,一個(gè)函數(shù)就可以搞定,這下就可以隨心所欲的生產(chǎn)遠(yuǎn)程登錄配置文件啦。

MSDN定義如下:

C++
1
2
3
4
5
6
7
8
9
BOOL WINAPI CryptProtectData(
DATA_BLOB* pDataIn,
LPCWSTR szDataDescr,
DATA_BLOB* pOptionalEntropy,
PVOID pvReserved,
CRYPTPROTECT_PROMPTSTRUCT* pPromptStruct,
DWORD dwFlags,
DATA_BLOB* pDataOut
);

以下是簡單的測(cè)試源碼,相信運(yùn)行下就明白啦,MSDN例子里面沒有說明寬字符等問題

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
void main()
{
DATA_BLOB DataIn;
DATA_BLOB DataOut;
// mstsc.exe中使用的是unicode,所以必須做寬字符轉(zhuǎn)換
BYTE *pbDataInput =(BYTE *)L"freedom";
DWORD cbDataInput = wcslen(L"freedom")*sizeof(wchar_t);
DataIn.pbData = pbDataInput;
DataIn.cbData = cbDataInput;
if(CryptProtectData(&DataIn,L"password", // 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 // 因?yàn)橐粋€(gè)unsigned int 占32位
// 轉(zhuǎn)換成成16進(jìn)制要占兩位
// 所以這里需要用%02
printf("%02X",DataOut.pbData[count]);
count++;
}
else
{
printf("Encryption error using CryptProtectData.\n");
return -1;
}
}

貌似沒貼頭文件,添加下Wincrypt.h就可以啦^_^

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多