我如何解码由该程序编码的字符串?

时间:2015-10-03 13:35:24

标签: python

这是我用来编码的代码

import string 

def encode(text,rotate_by):
    s_from = string.ascii_lowercase + string.ascii_uppercase
    s_to = (string.ascii_lowercase[rotate_by:] +
            string.ascii_lowercase[:rotate_by] + 
            string.ascii_uppercase[rotate_by:] + 
            string.ascii_uppercase[:rotate_by])
    cypher_table = string.maketrans(s_from, s_to)
    cypher_table = string.maketrans(s_from, s_to)
    return text.translate(cypher_table)


text = raw_input("Enter the text to encode: ")
rotate_by = int(raw_input("Rotate by: "))
print encode(text, rotate_by)

我如何解码由此编码的字符串?

2 个答案:

答案 0 :(得分:0)

这是一个非常简单的旋转编码。你只需要反转轮换。

我会试试这个:

def decode(text, rotate_by):
    s_from = string.ascii_lowercase + string.ascii_uppercase
    s_to = (string.ascii_lowercase[rotate_by:] +
        string.ascii_lowercase[:rotate_by] + 
        string.ascii_uppercase[rotate_by:] + 
        string.ascii_uppercase[:rotate_by])
    reverse_table = string.maketrans(s_to, s_from)
    return text.translate(reverse_table)

BTW:在你的编码中,string.maketrans-line是重复的。

上面重要的一行是maketrans-line,因为我只是颠倒了参数,这也应该反转翻译表。其他所有内容都与原始代码相似或相等。

答案 1 :(得分:0)

只需使用编码(加密)字符串调用encode,并使用反转符号调整原始rotate_by。

例如:

>>> encode("hello",3)
'khoor'
>>> encode("khoor",-3)
'hello'