python 中使用 Vigenere 密码加密字符串的程序


假设我们有一个小写字母字符串 text,并且有另一个字符串 key。我们要找到一个新字符串,其中 text[i] 的每一个字母都向右移动,偏移量为 key[i]。这里偏移量由 key[i] 在字母表中的位置表示 (A=0,B=1 等)。如果字母溢出,则环绕到另一侧。

因此,如果输入类似于 text =“code”,key =“team”,那么输出将是“vsdq”

要解决此问题,我们将按照以下步骤进行操作 -

  • cip := 一个新列表
  • start := 'a' 的 ASCII 码
  • 对于 text 中的每个 l 和 key 中的 k,执行
    • shift := (k 的 ASCII 码) - start
    • pos := start +((l 的 ASCII 码) - start + shift) mod 26
    • 在 cip 的末尾插入 pos 的字符
  • 连接 cip 的字符串并返回

让我们看看以下实现以获得更好的理解 -

示例

 现场演示

class Solution:
   def solve(self, text, key):
      cip = []
      start = ord('a')
      for l, k in zip(text, key):
         shift = ord(k) - start
         pos = start + (ord(l) - start + shift) % 26
         cip.append(chr(pos))
      return ''.join([l for l in cip])
ob = Solution()
text = "code"
key = "team"
print(ob.solve(text, key))

输入

"code", "team"

输出

vsdq

更新于: 2020 年 10 月 5 日

4K+ 浏览量

开启你的 职业

完成课程即可获得认证

开始
广告