2024-04-25 15:12:51 发布
网友
我是一名学校教师,整个暑假都在用python编写一个词汇训练程序,使用wikipedia和gutenberg提供的文本。现在我要做的就是想办法过滤掉咒语,这样我就可以分发给学生了。在
通常我只需要一个诅咒词的数组(列表),然后做一个简单的过滤器。但问题是py文件本身是可以打开的,这些学生看到这些单词。如果我把它放在一个单独的文件中,以某种方式加密,那么他们就可以删除这个文件,输出不会被过滤。在
有什么解决办法吗?在
在你的分布式文件中包含这些单词,但是以某种方式对它们进行加密,这样就不可能轻易地找到明文列表。然后,使用py2exe将脚本编译为.exe。这将阻止大多数学生逆向工程程序和寻找加密算法。在
如果学生发现了解密例程,那么它是否是强加密并不重要,因此rot13或{}就足够了。在
rot13
(w.decode('rot13') for w in ['sbeovqqra', 'sbeovqqra gbb', 'rira zber sbeovqqra'])
要列出列表,只需在实际单词上使用encode。在
encode
当然,正如上面建议的那样,散列也会起作用。在
你能做的就是把你想搜索的词散列出来。这使得过滤有点困难,因为您必须将输入分解成单词,散列每个单词,然后查看是否有匹配的哈希值。在
查看md5()的文档
你的源代码将只包含散列单词,并且无法将其转换为单词列表(但是,更有创造力的学生可能会有一些正确的猜测!)在
如果所有学生都在运行同一版本的Python(例如在计算机实验室),那么可以分发pyc文件。这只是混淆,但它会阻止临时用户。在
在你的分布式文件中包含这些单词,但是以某种方式对它们进行加密,这样就不可能轻易地找到明文列表。然后,使用py2exe将脚本编译为.exe。这将阻止大多数学生逆向工程程序和寻找加密算法。在
如果学生发现了解密例程,那么它是否是强加密并不重要,因此}就足够了。在
rot13
或{要列出列表,只需在实际单词上使用
encode
。在当然,正如上面建议的那样,散列也会起作用。在
你能做的就是把你想搜索的词散列出来。这使得过滤有点困难,因为您必须将输入分解成单词,散列每个单词,然后查看是否有匹配的哈希值。在
查看md5()的文档
你的源代码将只包含散列单词,并且无法将其转换为单词列表(但是,更有创造力的学生可能会有一些正确的猜测!)在
如果所有学生都在运行同一版本的Python(例如在计算机实验室),那么可以分发pyc文件。这只是混淆,但它会阻止临时用户。在
相关问题 更多 >
编程相关推荐