如何在py文件中“隐藏”诅咒词?

时间:2010-08-22 15:46:49

标签: python filter

我是一名学校老师,他花了一个暑假在python中编写了一个词汇训练程序,该程序使用维基百科和古腾堡提供的文本。现在我所要做的就是找出一种方法来过滤诅咒词,以便我可以分发给学生。

通常我会有一个这些诅咒词的数组(列表)并做一个简单的过滤器。但问题是py文件本身可以被这些学生打开,看到这些单词。如果我把它放在一个单独的文件中,以某种方式加密,那么他们就可以删除该文件并且不会过滤输出。

有关解决方法的任何想法吗?

5 个答案:

答案 0 :(得分:6)

您可以做的是对要搜索的字词进行哈希处理。它使得过滤更加困难,因为你必须将输入分解为单词,对每个单词进行散列,然后查看你是否匹配该散列。

查看md5()

的文档

您的源代码将只包含散列单词,并且无法将其反转为单词列表(但是,更有创意的学生可能会进行一些声音猜测!)

答案 1 :(得分:6)

如果所有学生都运行相同版本的Python(例如在计算机实验室中),则可以分发pyc文件。这只是混淆,但它会阻止临时用户。

答案 2 :(得分:1)

在分发文件中包含单词,但以某种方式加密它们使得无法轻松找到明文列表。然后,使用py2exe将脚本编译为.exe。这将阻止大多数学生对程序进行逆向工程并找到加密算法。

如果学生找到解密例程,如果它是强加密则无关紧要,因此rot13base64就足够了。

(w.decode('rot13') for w in ['sbeovqqra', 'sbeovqqra gbb', 'rira zber sbeovqqra'])

要制作列表,只需在真实单词上使用encode

当然,如上所述,哈希也会起作用。

答案 3 :(得分:1)

为什么不分发编译的python .*pyc文件呢?如果他们想要,他们仍然可以查找字符串,但它可能会阻止随意浏览文件,这可能足以满足您的需求。

答案 4 :(得分:0)

def avoid_paperwork(word):
    result = ''
    for letter in word:
        if letter == 'z':
            result += '_'
        else:
            result += chr(ord(letter) + 1)
    return result
相关问题