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+ 瀏覽量

開啟你的 職業

完成課程即可獲得認證

開始
廣告
© . All rights reserved.