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

โปรแกรมเข้ารหัสสตริงโดยใช้รหัส Vigenere ใน Python


สมมติว่าเรามีข้อความสตริงตัวอักษรพิมพ์เล็กและมีสตริงอื่นที่เรียกว่าคีย์ เราต้องหาสตริงใหม่ที่ทุกตัวอักษรใน text[i] ถูกย้ายไปทางด้านขวาด้วย offset key[i] นี่คือออฟเซ็ตที่แสดงโดยตำแหน่งของคีย์[i]ในตัวอักษร (A=0, B=1 เป็นต้น) หากตัวอักษรล้น จะถูกห่อรอบอีกด้านหนึ่ง

ดังนั้น หากอินพุตเป็น text ="code", key ="team" ผลลัพธ์จะเป็น "vsdq"

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • cip :=รายการใหม่
  • start :=ASCII ของ 'a'
  • สำหรับแต่ละ l จากข้อความและ k จากคีย์ ทำ
    • shift :=(ASCII ของ k) - เริ่ม
    • pos :=start +((ASCII of l) - start + shift) mod 26
    • ใส่อักขระของ pos ที่ส่วนท้ายของ cip
  • รวมสตริงของ 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