2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

RDP密碼加密算法

 左目右于 2012-05-07

RDP密碼加密算法

2012-03-08

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

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

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
);

以下是簡單的測試源碼,相信運行下就明白啦,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,所以必須做寬字符轉換
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 // 因為一個unsigned int 占32位
// 轉換成成16進制要占兩位
// 所以這里需要用%02
printf("%02X",DataOut.pbData[count]);
count++;
}
else
{
printf("Encryption error using CryptProtectData.\n");
return -1;
}
}

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

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多