.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 的时候,会生成一个 pwds.pyc 文件。我想的是,一旦生成了 .pyc 文件,我就可以删除 pwds.py,然后正常运行 runme.py。另外,我以为 pwds.py 的内容会被包含在 .pyc 文件里,并且因为这是一个“编译过的”Python文件,所以是不可读的。因此,虽然我可以删除 pwds.py 并成功运行 runme.py,但如果我用记事本打开 pwds.pyc,它的内容还是能被看见。
所以,我想问的问题是:如何才能让 pwds.py 的内容不可读?我想用上面的代码把“秘密”信息放在一个Python文件里,编译后只有输入正确的密钥才能访问这些内容。这样的做法是不是太傻了,根本不值得考虑?我不想去写一个“加密器”和“解密器”,我觉得这应该是一个简单又便宜的解决方案。
感谢你阅读这些!如果还有其他我应该提供的信息,请告诉我。
1 个回答
2
.pyc文件其实就是存放编译好的Python代码,这样每次运行程序的时候就不需要重新编译了。因此,里面的所有字符串仍然是可以被读取的(你可以查看它的二进制内容,或者通过pdb调试器逐步执行程序)。
如果你想用密码来保护代码中的某些内容,你需要用强加密的方法来加密这些内容,并且只保存加密后的版本。用户的密钥或密码会用来解密这些数据。