Vigenère Cipher (interwoven Caeser)
vigenere_(interwovenCaeser).py
#vigenere square cipher key = "XYZ" plaintext = "MATE" #work out how much wrapping is needed: whole,partial = divmod(len(plaintext),len(key)) adjusted_key = (key * whole) + key[:partial] #key is now "XYZX" to cover all the letters of "MATE" ciphertext=[] for index, letter in enumerate(plaintext): shift_amount = (ord(letter) + ord(adjusted_key[index])) % 26 encrypted_letter = chr( shift_amount + ord("A") ) ciphertext.append(encrypted_letter) print("Ciphertext:", "".join(ciphertext))