精華區beta GameDesign 關於我們 聯絡資訊
※ 引述《gamblemaker (GambleMaker)》之銘言: : ※ 引述《gamblemaker (GambleMaker)》之銘言: : : 推 GALINE:CRC、MD5、SHA都是一樣功能的東西,愛用CRC是因為CRC速度快 : : → GALINE:不考慮強固性,只考量檔案版本跟是否有傳輸錯誤,CRC就能用 : 我是想回這位大大的推文 感謝你的推 我也回報你一下 : 你不知道 TCP 裡面有 CRC 嗎?? : checksum 那欄幹麼用的.... 樓上的回文說的是客戶端程式(也就是你寫的updater)計算檔案的CRC,然後傳回伺服器 這件事情跟TCP的CRC並沒有關係。並不會因為TCP有對每個封包作CRC就能夠知道整個檔 案的CRC : 還有 crc 怎樣確保檔案是唯一的?? 還有所謂強固性是什麼東西??? 基本上crc、md5、sha、des…這些東西都是雜湊函數(hash function。 雜湊函數的目的是你丟一段資料進去,他會吐出一段長度固定的雜湊值出來。吐出來的東 西(理論上)不能用來反推出原本的資料內容。而且只要餵進去的資料有很小的差別,雜 湊值就會變得完全不同。 換言之,只要檔案有改動/損壞/版本不同,計算出的hash就會完全不同。因此可以用來當 作檔案版本識別,還能避免使用者自己改版本紀錄檔的問題。 TCP對整個封包作CRC,然後把CRC的值放在封包內,接收端檢查crc跟封包是否批配,如果 批配表示封包內容沒有傳輸錯誤。要用MD5或sha-1來作理論上也是一模一樣。可是技術上 來說會浪費運算資源跟網路頻寬。 同樣的,你的檔案作CRC之後,只要沒有被改動,算出的CRC跟伺服器端的CRC應該要一樣 如果不一樣,要不是程式被改過,不然就是版本不同了(或說伺服器端的程式被改過) 強固性就是指容不容易被人找出碰撞。crc最容易,因為他bit數最少。實務上把crc跟 檔案大小兩個參數參在一起,要碰撞的機會就很低了。 這種情況如果真的碰撞,大概跟搭747結果外艙裂開,還只有自己被吸出機艙外一樣倒楣 當然,如果你不信任CRC,你也可以用MD5、SHA、或其他任何hash function 如果你要知道更詳細的概念,請搜尋hash function或雜湊函數。這個可以講很久… : → GALINE:P2p跟ftp跨nat一樣可以用,列表公開只要你不讓人上傳就沒事 06/13 12:41 : p2p跟ftp跨nat當然可以用 但是你有辦法解決嗎? : 也許你很強花一天就解決這個問題了 對不起,我不強,現在我連百行的C程式都寫不出來。 不過我覺得我知道的東西應該夠你參考。 FTP要跨NAT請切passive模式 怎麼實做要看你是要自己寫client、用別人的library、或是呼叫系統內建的ftp程式 自己寫的話…請先去看rfc959,這是FTP的規範文件。如果真看完你就比我威了[汗] 用別人的library,要怎麼下指令切換請找library的的文件。 呼叫系統內建的ftp,請參考系統程式的說明檔。像是進ftp之後下"PASV"指令之類的 windows的ftp不直接支援,要下literal指令給ftp server。詳細請google。 P2P我還真的不知道怎麼搞,但至少技術上可行。現在的主流P2P都能作到 如果有現成的library就好了。 : 那我們假設 server 後面也是 nat ? 請問哪個比較方便?? server端如果也在nat後面會很麻煩。我知道的方法是設定nat的dmz給你的檔案伺服器。 不過我不認為這樣是個好方法就是。 最好是不要這麼作,真的要的話就多試驗了[汗] : 列表公開真的不上傳就沒事嗎?我中間給你 proxy 你怎麼辦? : 在加上你只有 CRC , 檔案要被換爽的喔? 前提是人家要能找出同樣大小的CRC碰撞,而且換了以後還要是能執行的檔案… 當然,如果你不信任CRC,那就用MD5或SHA,甚至你想用一些鮮為人知的hash也可以 這種問題就跟鎖跟開鎖一樣,扁鑰匙並不是無法被打開,但是為什麼大家還是用扁鑰匙? 因為扁鑰匙已經夠用。要加強安全性的話成本跟方便性都會大幅下降。 如果你認為需要更高的安全性,避免中間人,那就去弄台能跑https或ftps的機器吧,然 後去申請公開簽章吧。然後找看看有沒有適合的library來用。 或你比較拚命的話,你可以看很多很多的rfc文件以後自己寫… -- 你們這些只會躲在家裡發些缺乏社會知識討論串的傢伙 --護士魔女蔻睦姬 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.62.112.152 ※ 編輯: GALINE 來自: 61.62.112.152 (06/13 13:32) ※ 編輯: GALINE 來自: 61.62.112.152 (06/13 13:34)
gamblemaker:我承認這篇比較有被M的價值 06/13 13:34
gamblemaker:但是 用http就可以的事情 為什麼要搞FTP? 06/13 13:35
GALINE:那就用http啊,只要你有辦法傳輸就好了 06/13 13:36
GALINE:至於http會不會overhead比較重我就不敢說了 06/13 13:37
GALINE:我是覺得原本人家回文只是舉個實做可能的方法,而且也不會 06/13 13:38
GALINE:比較差…你可以不用直接飆回去,你語氣真的很嗆 06/13 13:38
GALINE:另外http伺服器一般來說比較肥,相對的可能被攻擊的點也多 06/13 13:40
GALINE:有沒有必要另外開,或者是有現成的http機器可用,這些都是 06/13 13:41
GALINE:要考量的點。基本上這個部份都是網路安全,跟寫程式本身的 06/13 13:42
GALINE:關係相對比較小了… 06/13 13:42
haryewkun:用ftp的理由是因為有現成的ftp server,直接架就好了。 06/13 13:45
GALINE:搞不好人家是用win2k/2k3搭配IIS當檔案伺服器,都現成啊www 06/13 13:45
haryewkun:其實想了想,用http也一樣…… 06/13 13:46
haryewkun:XD 06/13 13:46