Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมเข้ารหัสสตริงด้วยรหัส Vigenère ใน Python

Vigenère cipher: ขยับตัวอักษรใน text ไปขวาตามตำแหน่งของตัวอักษรใน key (a=0, b=1,...) วนซ้ำ key ถ้าสั้นกว่า

ตัวอย่าง: text="code", key="team" → "vsdq"

อัลกอริธึม

  • สำหรับแต่ละคู่ (l,k): shift = ord(k) - ord('a')
  • new_pos = (ord(l) - ord('a') + shift) % 26 + ord('a')

การนำไปใช้

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(cip)

ob = Solution()
print(ob.solve("code", "team"))  # vsdq