Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình mã hóa một chuỗi bằng cách sử dụng mật mã Vigenere trong Python

Giả sử chúng ta có một văn bản chuỗi chữ cái viết thường và có một chuỗi khác được gọi là khóa. Chúng ta phải tìm một chuỗi mới trong đó mọi chữ cái trong văn bản [i] được chuyển sang phía bên phải bằng phím offset [i]. Ở đây phần bù được biểu thị bằng vị trí của phím [i] trong bảng chữ cái (A =0, B =1, v.v.) Nếu chữ cái bị tràn, nó sẽ bị quấn quanh phía bên kia.

Vì vậy, nếu đầu vào là text ="code", key ="team", thì đầu ra sẽ là "vsdq"

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • cip:=một danh sách mới
  • start:=ASCII của 'a'
  • đối với mỗi l từ văn bản và k từ khóa, hãy thực hiện
    • shift:=(ASCII của k) - bắt đầu
    • pos:=start + ((ASCII of l) - start + shift) mod 26
    • chèn ký tự của vị trí vào cuối cip
  • nối các chuỗi cip và trả về

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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

Đầu vào

"code", "team"

Đầu ra

vsdq