乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      RDP密碼加密算法

       左目右于 2012-05-07

      RDP密碼加密算法

      2012-03-08

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

      這里面最要緊的是對密碼的加密,看了半天都不太像常用的加密方式,什么MD5,SHA,CRC,BASE64等等。而且貌似字符串很長的樣子,好,我們需要重點(diǎn)關(guān)注如何生成這個字符串。原來WinAPI中已經(jīng)有加解密的函數(shù)來,一個函數(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
      );

      以下是簡單的測試源碼,相信運(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)橐粋€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就可以啦^_^

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多