.pyc文件和天真加密

时间:2010-11-06 16:31:00

标签: python encryption

我有一个相当天真的事情我想做,我想知道是否有人可以回答可以告诉我这是不是很愚蠢。如果我要问的不是愚蠢但也许是天真的,如果我能够朝着正确的方向努力,我会很感激。

我有一个名为 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!")

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 时,会创建一个 pwds.pyc 文件。我的想法是,一旦创建了 .pyc 文件,我就可以删除 pwds.py 并正常运行 runme.py 。另外,我认为 pwds.py 的内容将包含在 .pyc 中,但由于这是一个“已编译”的Python文件,因此无法读取。因此,虽然我可以删除 pwds.py 并成功运行 runme.py ,但是如果我打开它, pwds.pyc 几乎是可读的,说,记事本。

因此,问题一般:如何保持 pwds.py 的内容不可读?我想用上面的代码做的是将“秘密”信息保存在Python文件中,编译它,并且只有在键入正确的密钥时才能访问其内容。这种方法是否太愚蠢甚至不考虑?我不想写一个“garbler”和一个“degarbler”。我认为这将是一个简单而廉价的解决方案。

感谢您阅读本文!如果我有任何其他信息,请告诉我。

1 个答案:

答案 0 :(得分:2)

.pyc文件只包含已编译的python代码,因此每次运行程序时都不需要重新编译。因此,其中的所有字符串仍然可读(您可以随时查看二进制内容或通过pdb调试器逐步执行该程序)。

如果您想使用密码保护代码中的内容,则必须使用强加密加密并仅存储加密版本。然后使用用户的密钥/密码来解密数据。