我目前正在从事一项家庭作业,我们必须构建一个函数,在其中编写一个三步加密/解密程序.我们必须构建的密码之一是变位/轨道围栏,该围栏接受变量(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 '
我在“已加密”字符串中插入了空格,并仅对“已加密”字符串使用了加密方法对其进行解密.我得到了正确的结果,最后还有一些额外的预期空格.
由于这是家庭作业,我将让您弄清楚如何计算在哪里添加空格.
您的解密方法只能修改消息(插入空格),调用您的加密方法并删除尾随空白.