全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1009
推到 Plurk!
推到 Facebook!

請問加解密的方法~~

答題得分者是:HomeSound
LI
一般會員


發表:15
回覆:18
積分:6
註冊:2003-06-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-08 13:10:20 IP:210.71.xxx.xxx 未訂閱
小妹有一問題呀~~就是在BCB中的加密方法有分為: 對稱式及非對稱式加密法,但是否有人寫出類式的各種的加密範例呢? 請各位大哥幫忙一下嘍~~
HomeSound
中階會員


發表:44
回覆:178
積分:94
註冊:2002-08-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-10 10:02:03 IP:61.30.xxx.xxx 未訂閱
引用RaynorPao包子"仙"的範例,希望是您要的 (1)一個完整的範例,希望妳再依照自己的需求做修改
typedef struct _MYSTRUCT
{
   DWORD dw1;
   DWORD dw2;
   char sz1[16];
   char sz2[16];
} MYSTRUCT, *PMYSTRUCT;    void __fastcall TForm1::Button4Click(TObject *Sender)
{
   MYSTRUCT MyStruct;       ZeroMemory(&MyStruct, sizeof(MYSTRUCT)); // 先把 struct 內容清為 0
   MyStruct.dw1=1111; // 給值,稍候用來驗證
   MyStruct.dw2=2222; // 給值,稍候用來驗證
   lstrcpy(MyStruct.sz1, "test1"); // 給值,稍候用來驗證
   lstrcpy(MyStruct.sz2, "test2"); // 給值,稍候用來驗證       // 把 encrypt 之前的 struct 存檔,稍候用來跟其他檔案比較
   TMemoryStream *msBeforeEncrypt=new TMemoryStream;
   msBeforeEncrypt->Size=sizeof(MYSTRUCT);
   msBeforeEncrypt->Write(&MyStruct, sizeof(MYSTRUCT));
   msBeforeEncrypt->SaveToFile("BeforeEncrypt.dat");
   delete msBeforeEncrypt;       // encrypt (加密)
   MyEncrypt((BYTE*)&MyStruct, sizeof(MYSTRUCT));       // 把 encrypt 之後的 struct 存檔,稍候用來跟其他檔案比較
   TMemoryStream *msAfterEncrypt=new TMemoryStream;
   msAfterEncrypt->Size=sizeof(MYSTRUCT);
   msAfterEncrypt->Write(&MyStruct, sizeof(MYSTRUCT));
   msAfterEncrypt->SaveToFile("AfterEncrytp.dat");
   delete msAfterEncrypt;       // decrypt (解密)
   MyDecrypt((BYTE*)&MyStruct, sizeof(MYSTRUCT));       // 把 decrypt 之後的 struct 存檔,稍候用來跟其他檔案比較
   TMemoryStream *msAfterDecrypt=new TMemoryStream;
   msAfterDecrypt->Size=sizeof(MYSTRUCT);
   msAfterDecrypt->Write(&MyStruct, sizeof(MYSTRUCT));
   msAfterDecrypt->SaveToFile("AfterDecrypt.dat");
   delete msAfterDecrypt;       // 驗證,看經過 encrypt/decrypt 之後的值,是否跟一開始給的一樣
   ShowMessage("MyStruct.dw1=" IntToStr(MyStruct.dw1));
   ShowMessage("MyStruct.dw2=" IntToStr(MyStruct.dw2));
   ShowMessage("MyStruct.sz1=" (AnsiString)MyStruct.sz1);
   ShowMessage("MyStruct.sz2=" (AnsiString)MyStruct.sz2);
}    void __fastcall TForm1::MyEncrypt(BYTE *pbData, DWORD dwLen)
{
   DWORD dwi=0;
   // 7, 6, 5, 4, 3, 2, 1, 0 to 0, 3, 4, 5, 1, 2, 6, 7
   for(dwi=0; dwi> 1);
      bTmp=0x40 & bSrc;
      bDst|=(bTmp >> 5);
      bTmp=0x80 & bSrc;
      bDst|=(bTmp >> 7);
      pbData[dwi]=bDst;
      Application->ProcessMessages();
   }
}    void __fastcall TForm1::MyDecrypt(BYTE *pbData, DWORD dwLen)
{
   DWORD dwi=0;
   //  7, 6, 5, 4, 3, 2, 1, 0 to 0, 1, 4, 5, 6, 2, 3, 7
   for(dwi=0; dwi> 2);
      bTmp=0x10 & bSrc;
      bDst|=(bTmp << 1);
      bTmp=0x20 & bSrc;
      bDst|=(bTmp >> 1);
      bTmp=0x40 & bSrc;
      bDst|=(bTmp >> 3);
      bTmp=0x80 & bSrc;
      bDst|=(bTmp >> 7);
      pbData[dwi]=bDst;
      Application->ProcessMessages();
   }
}
(2)上面的程式執行完之後,還會產生三個檔案,試比較檔案的內容 (3)以上大部分的程式碼都是不必要的,當你得到驗證這個方法是沒有問題的時 候,請再自行把不必要的程式碼去掉 --==多看.多學.多聽==--
------
--==多看.多學.多聽==--
系統時間:2024-07-05 13:44:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!