重复键的长度与在Python中输入的素的长度一样多

  • 本文关键字:一样 Python python encryption
  • 更新时间 :
  • 英文 :

plaintext:sunny day
key:like
sunny day
likelikel   <--What I want to get

1) 我现在想通过输入值接收纯文本和密钥来实现经典密码。与纯文本相比,我想让键值与上面的纯文本一样长。

for t in range(len(plaintext)):
letterspace = ord(plain[t]) - ord(keyletter[t])

2) 之后,我们将努力找出"s"one_answers"l"、"u"one_answers"i"之间的距离。。(续)然而,这项任务也存在问题。这导致indexerror:字符串索引超出范围错误。

我想知道如何处理这两个相关的问题。答案1和2似乎是相连的,所以我把它们放在一起。

有多种策略可以解决这个问题。

您可以重复初始密钥以获得至少与明文一样大的重复密钥:

keyletter = keyletter * math.ceil(len(plain)/len(keyletter))
# the following code is not changed
for t in range(len(plaintext)):
letterspace = ord(plain[t]) - ord(keyletter[t])

您还可以使用一种方法在t到达keyletter的末尾时对其进行包装。这可以用计数器完成,但最简单的是使用模运算符:

for t in range(len(plaintext)):
letterspace = ord(plain[t]) - ord(keyletter[t % len(keyletter)])

最新更新