Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 Vigenere 암호를 사용하여 문자열을 암호화하는 프로그램

<시간/>

소문자 알파벳 문자열 텍스트가 있고 key라는 다른 문자열이 있다고 가정합니다. text[i]의 모든 문자가 오프셋 키[i]를 사용하여 오른쪽으로 이동되는 새 문자열을 찾아야 합니다. 여기에서 알파벳에서 key[i]의 위치가 나타내는 오프셋입니다(A=0, B=1 등). 문자가 넘칠 경우 다른 쪽을 감싸게 됩니다.

따라서 입력이 text ="code", key ="team"인 경우 출력은 "vsdq"가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • cip :=새 목록
  • start :='a'의 ASCII
  • 텍스트의 각 l과 키의 k에 대해 다음을 수행합니다.
    • shift :=(k의 ASCII) - 시작
    • pos :=시작 +((l의 ASCII) - 시작 + 시프트) 모드 26
    • cip 끝에 pos 문자 삽입
  • cip 및 return 문자열 결합

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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