我现在正在做一个家庭作业,我们必须建立一个函数,在这个函数中我们要做一个三步加密/解密程序。我们需要构建的密码之一是一个换位/轨道围栏,它将变量(n)作为您想要加密消息的“rails”的数量。我已经建立了加密,但我不知道解密方法。在
这是一个python的入门级类,因此除了下面包含的加密代码之类的基础知识外,我们不知道太多。在
如果你不确定我所说的“换位加密/围栏”是什么意思,这里有一个例子。。。在
Message = abcdefg
n = 3
它最终被加密成3个组(如n所示),这些组将是"adg be cf"
,然后加密将它们重新组合成一个字符串"adgbecf"
。我的问题是将它们分解为"adg be cf"
的最初三个字符串,然后将它们转换回原始值。在
加密:
^{pr2}$当前解密(不起作用):
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
问题是,密码不一定能被n整除,因此由encrypt函数创建的“bin”的长度并不完全相同。第一个len(cipher)%n bin有一个额外的字母。在
在解密函数中迭代j时,如果i小于len(cipher)%n,则范围应为n+1。在
如果您的加密方法是正确的(有人评论说这不是铁路密码),则以下是正确的:
您可以这样进行加密:
我给你一个关于解密的提示:
^{pr2}$我在“encrpyted”字符串中插入空格,然后在“encrypted”字符串上使用encrypt方法对其进行解密。我得到了正确的结果,在结尾有一些额外的预期空间。在
既然这是家庭作业,我就让你计算出在哪里加空格。在
解密方法只需修改消息(插入空格),调用encrypt方法,并去掉后面的空白。在
相关问题 更多 >
编程相关推荐