2010-11-06 139 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