Chapter ? - Secret Code 3
- # Secret Code 3 - Vigenere Cipher
- import cryptoLib
- MAX_KEY_SIZE = 100
- def main():
- mode = cryptoLib.getMode()
- message = cryptoLib.getMessage()
- key = getKeyWord()
-
- print 'Your translated text is:'
- print getTranslatedMessage(mode, message, key)
- def getKeyWord():
- keyWord = ''
- print 'Enter the key word:'
- while keyWord.isalpha():
- keyWord = raw_input()
- return keyWord
- def getTranslatedMessage(mode, message, key):
- if mode in 'encrypt e'.split():
- return encrypt(message, key)
- if mode in 'decrypt d'.split():
- return decrypt(message, key)
-
- def encrypt(message, key):
- cipherText = ''
- keyPosition = 0
-
- for symbol in message:
- if symbol.isalpha():
- num = ord(symbol)
-
- if symbol.isupper():
- num -= ord('A')
- elif symbol.islower():
- num -= ord('a')
-
- num += ord(key[keyPosition])
- num = num % 26
-
- keyPosition += 1
- if keyPosition == len(key):
- keyPosition = 0
-
- if symbol.isupper():
- num += ord('A')
- elif symbol.islower():
- num += ord('a')
-
- cipherText += chr(num)
- else:
- cipherText += symbol
- return cipherText
- def decrypt(message, key):
- plainText = ''
- keyPosition = 0
-
- for symbol in message:
- if symbol.isalpha():
- num = ord(symbol)
-
- if symbol.isupper():
- num -= ord('A')
- elif symbol.islower():
- num -= ord('a')
-
- num -= ord(key[keyPosition])
- num = num % 26
- keyPosition += 1
- if keyPosition == len(key):
- keyPosition = 0
-
- if symbol.isupper():
- num += ord('A')
- elif symbol.islower():
- num += ord('a')
-
- plainText += chr(num)
- else:
- plainText += symbol
- return plainText
- if __name__ == '__main__':
- main()
- def getMode():
- mode = ''
- while (mode not in 'encrypt e decrypt d'.split()):
- print 'Do you wish to encrypt or decrypt a message?'
- mode = raw_input()
- mode = mode.lower()
- if (mode not in 'encrypt e decrypt d'.split()):
- print 'Enter either "encrypt" or "e" or "decrypt" or "d".'
- return mode
- def getMessage():
- print 'Enter your message:'
- message = raw_input()
-
- return message
- def getKey(maxKeySize):
- key = 0
- while (not (key >= 1 and key <= maxKeySize)):
- print 'Enter the key number (1-%s)' % (maxKeySize)
- key = int(raw_input())
- return key
Things Covered In This Chapter: