def encode(s, ROT_number=13):
"""Encodes a string (s) using ROT (ROT_number) encoding."""
ROT_number %= 26 # To avoid IndexErrors
alpha = "abcdefghijklmnopqrstuvwxyz" * 2
alpha += alpha.upper()
def get_i():
for i in range(26):
yield i # indexes of the lowercase letters
for i in range(53, 78):
yield i # indexes of the uppercase letters
ROT = {alpha[i]: alpha[i + ROT_number] for i in get_i()}
return "".join(ROT.get(i, i) for i in s)
def decode(s, ROT_number=13):
"""Decodes a string (s) using ROT (ROT_number) encoding."""
return encrypt(s, abs(ROT_number % 26 - 26))
import codecs
import sys
def main(filename):
output_file = open('output_file.txt', 'w')
with open(filename) as f:
for line in f:
output_file.write(codecs.decode(line, 'rot_13'))
output_file.close()
if __name__ == "__main__":
_filename = sys.argv[1]
main(_filename)
要回答第一个问题的第二部分,解码
ROT-x
中的内容,可以使用以下代码:要回答第一个问题的第一部分,找到任意编码字符串的rot编码,您可能需要使用暴力。使用所有的rot编码,并检查哪一个最有意义。一种快速的(-ish)方法是获取一个以空格分隔的(例如
^{pr2}$cat\ndog\nmouse\nsheep\nsay\nsaid\nquick\n...
,其中\n
是一个换行符)文件,其中包含英语中最常见的单词,然后检查哪个编码中单词最多。在在Unix计算机上可以使用的文件是^{} ,也可以在here中找到它
好吧,你可以逐行读取文件并解码。 输出应转到输出文件:
相关问题 更多 >
编程相关推荐