2009-06-25 73 views
5

我正在製作一個帶有任務和解決方案的小遊戲,解決方案是通過在任務完成後輸入給用戶的代碼來解決的。爲了有一定的安全性(防止作弊),我不想以純文本形式存儲遊戲中產生的代碼。但是因爲我需要能夠在玩家完成任務時給予玩家代碼,所以我無法對其進行哈希處理。什麼是最安全的python「密碼」加密

那麼什麼是最安全的方式來加密/解密使用Python的東西?

+0

看起來這裏:http://stackoverflow.com/questions/172486/what-pure-python-library-to-use-for- aes-256-encryption – 2009-06-25 12:54:42

+2

如果您以純文本格式存儲這些代碼,您將如何作弊? – innaM 2009-06-25 13:02:17

+0

只是因爲有人拿着數據庫表的代碼... – espenhogbakk 2009-06-25 14:51:27

回答

5

如果您的腳本可以解碼密碼,那麼有人可以破解您的服務器。加密僅在有人輸入密碼才能解鎖時才真正有用 - 如果它仍然未鎖定(或者腳本有解鎖密碼),則加密是毫無意義的

這就是爲什麼哈希更有用,因爲它是一個一種方式 - 即使有人知道你的密碼散列,他們不知道他們必須輸入的明文(沒有大量的蠻力)

我不會擔心保持遊戲密碼爲純文本。如果您擔心保護它們,請修復可能的SQL注入/等等,確保您的Web服務器和其他軟件是最新的並且配置正確等。

也許想到一種方法來減少竊取密碼的難度,而不是實際玩遊戲?例如,有一個遊戲(我不記得它是什麼),如果你使用等級跳過作弊,你進入了下一個等級,但它沒有標記爲「完整」,或者你可以跳過等級但沒有得到任何分數。或者看一下歐拉項目,你可以做任何關卡,但是如果你輸入了答案,那麼你只能得到積分(並且計算出答案是整個遊戲的重點,所以作弊會打敗遊戲)

如果你真的偏執,你可以可能使用非對稱加密,在那裏你基本的東西進行加密與key A,你只能用key B讀吧..

我想出了用GPG加密的類似的概念(流行的不對稱加密系統,主要用於郵件加密或簽名)to secure website data。我不太清楚這將如何適用於確保遊戲級別的密碼,正如我所說,你需要是真的偏執甚至考慮這個..

總之,我會說存儲密碼純文本,並將您的安全問題集中在其他地方(Web應用程序代碼本身)

2

如果是網頁遊戲,你不能存儲代碼服務器端並在完成任務時將它們發送給客戶端嗎?你的遊戲的架構是什麼?

至於加密,也許嘗試像pyDes

5

最安全的加密是不加密的。密碼應該減少到一個散列。這是一種單向轉換,使得密碼(幾乎)不可恢復。

當給別人一個代碼時,你可以做到以下幾點:其實安全。 (1)生成一些隨機字符串。

(2)給他們的字符串。

(3)保存您生成的字符串的散列。

一次。

如果他們「忘記」了代碼,您必須(1)確保他們有權獲得代碼,然後(2)再次執行該過程(生成一個新代碼,提供給他們,保存哈希)

0

你的問題不是很清楚。你想在哪裏解密?不管怎樣,明文都必須浮出水面,因爲你需要玩家最終了解它。

選擇一個cipher並完成它。