Search code examples
pythonencryptionvigenere

Vigenere Cipher Incredibly Confused


ive been stuck on this for hours now. I've been trying to encrypt a preset message with a preset vigenere key. so that the name lets say 'bob' shifts by the key 'abc' it shifts the word bob by the ascii values 'abc'.

I have this code right now but it isn't printing anything whatsoever and i'm incredibly confused on how to do this.

def vigenere(key, letter):

    keyVal = ord(key)
    letterVal = ord(letter)

    keyVal = keyVal - 97

    letterVal = keyVal + letterVal

    if letterVal >= ord("z"):
        letterVal = letterVal - 26

        print letterVal

Solution

  • You have to do that in loop for a string, like I did below:

    def vigenere(key, letter):
    
        letterChar = ""
        for i in range(len(letter)):
            keyVal = ord(key)
            letterVal = ord(letter[i])
            keyVal = keyVal - 97
            letterChar += chr(keyVal + letterVal)
            if letterVal >= ord('z'):
                letterVal = letterVal - 26
    
        print letterChar
    
    
    vigenere('c', "pop")
    

    It returns:

    rqr