2011-12-12 27 views
0

我想從客戶端向服務器發送安全數據(字符串)。這就是我想我想做的事:手動加密

  • 通過將它們按順序以特定的方式
  • 序列化的字節數組裏面打開字符串轉換成字節數組
  • 「爭奪」中的字節一類
  • 發送加密和序列化類服務器

那麼服務器會:

  • 反序列化類
  • 得到的字符串中的字節
  • 把字節按正確的順序
  • 進行串出的字節數

的這會是手動加密數據的好方法?這是安全的嗎?它甚至值得花時間去製作一個手動加密器嗎?

+0

如果客戶將公開可用,那麼這不會很好。有人可以對其進行逆向工程。如果是針對一小羣沒有興趣或需要的人,那應該沒問題。它會阻止任何人訪問服務器或客戶端解密信息。如果您想要一個失敗的例子,請查看軟件驗證和keygens。 – FakeRainBrigand

回答

4

聽起來好像你正試圖推出自己的對稱加密方案,使用一個雙方都知道的固定密鑰(「特定的方式」你亂搞字節)。通過簡單地使用具有已知密鑰的內置加密方案以及潛在的明顯缺點,這樣做沒有任何優勢。只需要很小的執行錯誤就可以創建惡意用戶可以利用的開放。

除非你爲生活做加密,否則你不能做比現在更好,已知並且在現場證明的(AES是一個好的開始)。如果安全對您很重要,請不要嘗試。然而,如果你想作爲一種愛好來體驗,那麼玩得開心點。

0

不,jumbling不是很好。對於一個簡單的方案,您可以檢查XOR運算符。

+0

,要注意的是,解密也是「微不足道的」。它可能需要一段時間的攔截,但我不會僅僅將這件事用於「不經意地隱藏」某些不太可能嘗試閱讀它的人,例如,這個僞裝的「你的母親」誰不在引擎蓋下徘徊。 – BRFennPocock

2

這是一種加密數據的方法嗎?

如果你只是「加擾」數據,沒有。如果只是被加密,重構明文將是「平凡的可能性」。 (這意味着第一次有人想要讀取數據,他們可能會,但如果他們不努力,他們不會偶然碰到它。)

另一方面,然後在其上運行一個「真正的」加密算法,這種擾亂給解密增加了一個微不足道的難度,但是你依靠一個簡單的加擾就足以減緩剛剛破解「真正」加密的人,這看起來似乎不太可能是值得的。

你可能會做得更好,堅持一個經過充分測試的加密機制,這個機制是由一個以非常大的素數爲生的人設計的。 Java的加密框架使您可以輕鬆實現公鑰/私鑰系統或雙盲密鑰交換系統;例如,您可以僅使用HTTP-SSL進行數據交換,而無需進行太多設置。

+1

PS:對於比Java標準庫提供的更多加密選項,您可能需要谷歌搜索「Bouncy Castle」。我自己並沒有使用它,但它似乎備受好評。 – BRFennPocock