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

字串傳輸加密(BASE64轉碼)利用INDY元件

 
TIY~2
一般會員


發表:26
回覆:37
積分:22
註冊:2003-08-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-30 16:13:11 IP:218.162.xxx.xxx 未訂閱
這是在這邊蒐集資訊和請教各位大大所得到結果,當然從這邊得到就回饋此網站 小弟撰寫純粹為了一些迷惘的兄弟姊妹們共同參考、以及研究 致謝:RaynorPao 大大熱心回答    測試版本:BCB5 安裝INDY 9.00.14 使用平台WIN XP 程式流程:原始字串=〉加密、轉碼=〉加密字串(可用於傳輸)=〉解碼、解密=〉原始字串    過程遇到況狀 最初我問的問題: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=46688 BASE64編碼遇到的問題: http://delphi.ktop.com.tw/topic.php?topic_id=47292 BASE64解碼遇到的問題: http://delphi.ktop.com.tw/topic.php?topic_id=39042 BASE64安裝問題可以參考:  http://delphi.ktop.com.tw/topic.php?topic_id=44646 http://delphi.ktop.com.tw/topic.php?topic_id=23704 安裝步驟中文說明 BASE64程式原理: http://delphi.ktop.com.tw/topic.php?topic_id=26104 http://delphi.ktop.com.tw/topic.php?topic_id=22036 http://delphi.ktop.com.tw/topic.php?topic_id=27151    
//---------------------------------------------------------------------------
AnsiString __fastcall TForm_Pass::Base64_Decode(AnsiString *str,BYTE key)
{
   //---初始化---
   TMemoryStream *memory=new TMemoryStream;
   int count;
   AnsiString org_str,enc_str;
   enc_str = (*str);       try{          //---解碼---
      IdDecoderMIME1->DecodeToStream(enc_str,memory); //解碼 將enc_str此字串內容解碼後傳給memory          count = memory->Size;    //計算字串所佔記憶體空間大小          char *buffer = new char[count]; //宣告同等大小的字元指標          buffer = (char *)memory->Memory; //設定buffer指標,指向memory此記憶體,且以字元方式存取          //---解密---
      for(int i=0;iEncodeString(IdEncoderMIME1->ClassType() ,org_str); 若不要加密則可以使用此函式直接對字串轉碼          temp = count;
      while(temp % 3 !=0)  //編碼時,要求3的倍數 ,因為要使用IdEncoderMIME1->Encode 此 function,所以長度要為3的倍數
         temp  ;          memory->Size=count;              //設定長度
      memory->Write(&buffer[0], memory->Size);   //將加密後的字元指標寫入memory此變數內
      memory->Position = 0;                    //重設位置
      enc_str = IdEncoderMIME1->Encode(memory,temp);  //轉碼 base64 為3的倍數記憶體空間
      memory->Clear(); //清除記憶體內容
      delete memory;
      delete [] buffer;          //ShowMessage(enc_str);   //顯示加密且轉碼後的字串內容
      //---回傳---
      return enc_str;   //回傳已經加密且轉碼的字串       }catch(...)
   {
      //容錯處理
      enc_str = "";
      return enc_str;
   }
}
//---------------------------------------------------------------------------
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-30 21:56:30 IP:61.64.xxx.xxx 未訂閱
確實是利害 敬佩敬佩  不單是程式利害 精神更佳    不過 應該請版主放至 個人作品 分享區 這樣日後比較好管理  發表人 -
系統時間:2024-05-05 8:08:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!