Python解密

2024-09-27 19:14:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在正在做一个家庭作业,我们必须建立一个函数,在这个函数中我们要做一个三步加密/解密程序。我们需要构建的密码之一是一个换位/轨道围栏,它将变量(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

Tags: 函数字符串in程序messageforrangebe
2条回答

问题是,密码不一定能被n整除,因此由encrypt函数创建的“bin”的长度并不完全相同。第一个len(cipher)%n bin有一个额外的字母。在

在解密函数中迭代j时,如果i小于len(cipher)%n,则范围应为n+1。在

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

您可以这样进行加密:

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

我给你一个关于解密的提示:

^{pr2}$

我在“encrpyted”字符串中插入空格,然后在“encrypted”字符串上使用encrypt方法对其进行解密。我得到了正确的结果,在结尾有一些额外的预期空间。在

既然这是家庭作业,我就让你计算出在哪里加空格。在

解密方法只需修改消息(插入空格),调用encrypt方法,并去掉后面的空白。在

相关问题 更多 >

    热门问题