2010-11-06 21 views
0

我有一個相當天真的事情,我想要做的,我想知道如果有人可以回答可以告訴我,如果這只是扁平愚蠢。如果我要問的不是愚蠢的,但也許天真的話,我會很感激,如果我能在正確的方向推動。.pyc文件和天真的加密

我有一個文件名爲pwds.py。其內容有

import hashlib 
class Pwds: 
    def __init__(self): 
     pass 
    def printGood(self,key): 
     y = hashlib.sha1() 
     y.update(key.encode('ascii')) 
     if y.hexdigest() == "db5f60442c78f08eefb0a2efeaa860b071c4cdae": 
      print("You entered the correct key!") 
     else: 
      print("Intruder!") 

然後我還有一個文件名爲runme.py,其內容是

import pwds 
x = input("Please type the password: ") 
y = pwds.Pwds() 
y.printGood(x) 
x = input("Press any key to end") 

第一次runme.py運行,一個殘疾人.pyc文件已創建。我的想法是,一旦.pyc文件被創建,我可以刪除pwds.py並運行runme.py正常。此外,我認爲pwds.py的內容將包含在.pyc中,但由於這是一個「編譯」的Python文件,所以它變得不可讀。因此,雖然我可以刪除pwds.py併成功運行runme.pypwds.pyc如果我在記事本中打開它,它的可讀性非常好。

因此,一般問題:如何保持pwds.py的內容不可讀?我想對上面的代碼做的事情是將「祕密」信息保存在一個Python文件中,編譯它,並且只有輸入正確的密鑰才能訪問它的內容。這種方法太愚蠢了,甚至不能考慮?我不想寫一篇「亂碼」和「脫牙器」。我認爲這將是一個簡單而便宜的解決方案。

感謝您閱讀本文!請讓我知道我是否應該提供任何其他信息。

+0

你有什麼隱瞞? HASH值?它很難找到即使你知道它會哈希值的東西... – alternative 2010-11-06 16:48:13

+0

我不想隱藏散列。我使用了散列,因爲我認爲在pwds.py中輸入密碼會很愚蠢。我希望if語句中的語句只有在輸入了正確的鍵時纔可見。但我不想讓某人打開文件並閱讀if子句中的內容。 – 2010-11-06 16:55:58

回答

2

.pyc文件只包含編譯好的python代碼,所以每次運行程序時都不需要重新編譯它。因此,其中的所有字符串仍然可讀(您可以始終查看二進制內容或通過pdb調試器瀏覽程序)。

如果你想用密碼保護你的代碼中的東西,你必須加密它具有強大的加密和只存儲加密版本。然後用戶的密鑰/密碼被用於解密數據。

+0

謝謝,任何推薦的閱讀材料? – 2010-11-06 16:56:41

+0

你可能想看看PyCrypto。 – ThiefMaster 2010-11-06 17:06:27

+0

謝謝。對於延遲將問題標記爲已回答抱歉抱歉。 – 2010-12-30 03:51:46