我有一个相当天真的事情我想做,我想知道是否有人可以回答可以告诉我这是不是很愚蠢。如果我要问的不是愚蠢但也许是天真的,如果我能够朝着正确的方向努力,我会很感激。
我有一个名为 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”。我认为这将是一个简单而廉价的解决方案。
感谢您阅读本文!如果我有任何其他信息,请告诉我。
答案 0 :(得分:2)
.pyc文件只包含已编译的python代码,因此每次运行程序时都不需要重新编译。因此,其中的所有字符串仍然可读(您可以随时查看二进制内容或通过pdb调试器逐步执行该程序)。
如果您想使用密码保护代码中的内容,则必须使用强加密加密并仅存储加密版本。然后使用用户的密钥/密码来解密数据。