字串加密傳送 |
答題得分者是:RaynorPao
|
TIY~2
一般會員 發表:26 回覆:37 積分:22 註冊:2003-08-07 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 請問如何將字串加密後傳送 接收端也可以自行解密後得到正確的字串 查詢了一下,看到很多方式都是對BYTE 加密在傳送 那麼字串轉BYTE要如何撰寫,或則可以逐一的對字串的每一個位元加密在串接起來 參考了一堆還是無煞煞,因為字串的長度不確定,所以不知道該怎麼下手 最後的結論就是我希望可以有一個副程式是可以傳字串(AnsiString)進去得到一個可以傳輸的BYTE型態,應該是這樣吧 希望大大可以提供網址或程式碼參考 謝謝 >>< face="Verdana, Arial, Helvetica"> TIY~2 你好: 所以,你的問題是如何把字串轉成 BYTE array 嗎? < class="code"> AnsiString sz="test"; BYTE *b=new BYTE[sz.Length()]; CopyMemory(b, &sz[1], sz.Length()); // ...Do something... delete [] b; 備註: 如果你希望包括字串最後的 '\0' 的話,就要這樣子寫AnsiString sz="test"; BYTE *b=new BYTE[sz.Length()+1]; CopyMemory(b, &sz[1], sz.Length()+1); // ...Do something... delete [] b;-- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2004/03/18 10:21:27
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
TIY~2
一般會員 發表:26 回覆:37 積分:22 註冊:2003-08-07 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 如果網路傳輸可以傳送BYTE ARRAY的話那就是 接下來的do something 假如我要加密是不是要對每一個位元最處理 例如for(int i=0;i TIY~2 你好: (1)我記得你好像曾經問過這個問題吧? > (>>>>>加密->>傳輸->>解密->原始字串 (>> < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10003806&CC=223734"> -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2004/03/18 11:54:08
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
TIY~2
一般會員 發表:26 回覆:37 積分:22 註冊:2003-08-07 發送簡訊給我 |
謝謝~~
另外我自己寫了一個小小測試
AnsiString sz; sz = "Test"; BYTE *b=new BYTE[sz.Length() 1]; CopyMemory(b, &sz[1], sz.Length() 1); // ...Do something... for(int i=0;i<=sz.Length();i ) { b[i]^=0x69; } for(int i=0;i<=sz.Length();i ) { b[i]^=0x69; } sz = (AnsiString)*b; MessageBox(NULL,sz.c_str(),"test",MB_OK); delete [] b;sz 最後不知道要怎麼 assign 出來?可以請教一下嗎? 還有CopyMemory(b, &sz[1], sz.Length() 1);此函式代表什麼,可以教導一下嗎? 裡面參數的意思,尤其是&sz[1]為什麼要放1ㄋ? 對了還有~~我是用Tserversocket,聽你一說~~好想換TIdTCPServer/TIdTCPClient,但程式已經大到某一種程度了,恐怕要改可能很難 也謝謝你提供此類的資訊,下次撰寫程式時我會注意到這點的 |
TIY~2
一般會員 發表:26 回覆:37 積分:22 註冊:2003-08-07 發送簡訊給我 |
|
TIY~2
一般會員 發表:26 回覆:37 積分:22 註冊:2003-08-07 發送簡訊給我 |
(7)如果要加入 Base64 的話,你的整個系統流程會變成這個樣子
原始字串->加密->Base64 編碼->傳輸->Base64 解碼->解密->原始字串
對不起再次造訪,我不是很懂
如果我的加解密只是防君子不妨小人的作法,一定得做那麼麻煩的地部嗎?
而且我用的撰寫軟體是BCB5,我的直覺是字串->加密->傳輸->解密->原始字串
如今我連續對BYTE陣列做了加密在做解密的動作,一樣可以得到正確的字串傳送給CLINET端
int count = sz.Length() 1; ServerSocket_S1->Socket->Connections[0]->SendBuf(b,count);CLINET端也只是用readtext就可以讀到原始字串,所以我就不太瞭解BASE64用意了 所以我的直覺是認為我只是運用位元的XOR69 第一次就是加密 而第二次不就解密回來了嗎 然後再把解密回來的BYTE指標傳給AnsiString不就得到原始字串 我目前冥想的流程是 原始字串->加密->解密->原始字串 原始字串是AnsiString型態 加密解密都是Byte型態 也許無知,但請大大指導 其次還有你說假如次串有A 加密後不見得是printable,所謂的不見得是什麼意思 如果我單純一點只改變 00011000 其中兩個位元,但都屬於後面的位元 00011011,這樣應該可以解決此類的不見得.不知道行不行? 在此先謝謝大大的指導 發表人 - tiy~2 於 2004/03/18 15:48:01 |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: (7)如果要加入 Base64 的話,你的整個系統流程會變成這個樣子 原始字串->加密->Base64 編碼->傳輸->Base64 解碼->解密->原始字串 對不起再次造訪,我不是很懂 如果我的加解密只是防君子不妨小人的作法,一定得做那麼麻煩的地部嗎? 而且我用的撰寫軟體是BCB5,我的直覺是字串->加密->傳輸->解密->原始字串 如今我連續對BYTE陣列做了加密在做解密的動作,一樣可以得到正確的字串傳送給CLINET端 我說的是「如果」,所以,你可以加入 Base64,當然也可以不加入,完全看你 自己的需求而決定;我只是提供另外一種實務的做法,讓你做參考!!-- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2004/03/19 16:26:04int count = sz.Length()+1; ServerSocket_S1->Socket->Connections[0]->SendBuf(b,count);CLINET端也只是用readtext就可以讀到原始字串,所以我就不太瞭解BASE64用意了 所以我的直覺是認為我只是運用位元的XOR69 第一次就是加密 而第二次不就解密回來了嗎 然後再把解密回來的BYTE指標傳給AnsiString不就得到原始字串 我目前冥想的流程是 原始字串->加密->解密->原始字串 原始字串是AnsiString型態 加密解密都是Byte型態 也許無知,但請大大指導 我所說的是一般的情形,並不是針對你使用的加/解密演算法,一般的加密演算 法得到的結果,裡面會夾雜著 0x00,如果你想要用純字串傳輸的方式,就會碰 到問題,這也是 Base64 會被廣泛的運用在很多網路 Protocol 裡面的原因,例 如: 你可以把一封含有附件的郵件儲存成 *.eml,利用 UltraEdit 打開來看看 ,你會發現檔案的串流已經被 Base64 編碼,以方便在網路上傳輸 (一般的檔案 ,除了純文字檔以外,裡面都會夾雜很多 0x00) 其次還有你說假如次串有A 加密後不見得是printable,所謂的不見得是什麼意思 如果我單純一點只改變 00011000 其中兩個位元,但都屬於後面的位元 00011011,這樣應該可以解決此類的不見得.不知道行不行? 加密之後,當然不見得還是 printable 的字元,這要看你使用的演算法而定, 一般來說,所謂的 printable 字元包括 A~Z, a~z, 0~9, !@#$%^&*()=...還有 這些有的沒的符號,每個都對應到自己的 ASCII 碼,試問?你已經試過以上這 些所有的 printable 字元,經過你的加密演算法之後,還會是 printable 的字 元嗎?建議你自己先試試看,別再空口說白話!!至於你自己想到的演算法,也要 經過你自己的測試,才能夠知道真正的結果!! 在此先謝謝大大的指導 此問題已經結案,如果還有新的問題,請另譬新題發問!!
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |