Python解密

我目前正在从事一项家庭作业,我们必须构建一个函数,在其中编写一个三步加密/解密程序.我们必须构建的密码之一是变位/轨道围栏,该围栏接受变量(n)作为要加密消息的“轨道”数.我已经建立了加密,但是我m失去了解密方法.

这是针对python的入门级类,因此我们对下面的加密代码等基础知识了解不多.

如果您不确定我所说的换位加密/围栏是什么意思,这是一个示例…

Message = abcdefg
n = 3

最后将其加密为3个组(如n所示),这些组将为“ adg be cf”,然后从那里将它们重组为一个字符串“ adgbecf”.我的麻烦是将它们重新分解为“ adg be cf”的原始三个字符串,然后将其转换回原始值.

加密:

def trans_encrypt(message, n):
    cipher = ""
    for i in range(n):
        for j in range(i, len(message), n):
            cipher = cipher + message[j]
    return cipher

当前解密(无效):

def trans_decrypt(cipher, n):
    length = len(cipher) // n
    message = ''
    for i in range(length): 
        for j in range(n):
            letter = (i + j * length) 
            message = message + cipher[letter] 
    return message

解决方法:

如果您的加密方法正确((有人评论说这不是密码),则满足以下条件:

您可以像这样进行加密:

>>> def trans_encrypt(message,n):
...     return "".join([message[i::n] for i in range(n)])
... 
>>> trans_encrypt(a,3)
'adgbecf'

我会给您一个有关解密的提示:

>>> b = 'adgbe cf '
>>> trans_encrypt(b,3)
'abcdefg  '

我在“已加密”字符串中插入了空格,并仅对“已加密”字符串使用了加密方法对其进行解密.我得到了正确的结果,最后还有一些额外的预期空格.

由于这是家庭作业,我将让您弄清楚如何计算在哪里添加空格.

您的解密方法只能修改消息(插入空格),调用您的加密方法并删除尾随空白.

上一篇:AESGCM解密与MAC失败


下一篇:AES解密不起作用