Python Forum
Stream Cipher Encryption and Decryption
Thread Rating:
  • 1 Vote(s) - 3 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Stream Cipher Encryption and Decryption
#1
Encryption (Python 2.7)
def main():

   message = raw_input("Enter a message without spaces or punctuation. ")

   message = list(message)

   n = 0

   while n < len(message):

       if message[n] == "A" or message[n] == "a":

           message[n] = 0

       elif message[n] == "B" or message[n] == "b":

           message[n] = 1

       elif message[n] == "C" or message[n] == "c":

           message[n] = 2

       elif message[n] == "D" or message[n] == "d":

           message[n] = 3

       elif message[n] == "E" or message[n] == "e":

           message[n] = 4

       elif message[n] == "F" or  message[n] == "f":

           message[n] = 5

       elif message[n] == "G" or message[n] == "g":

           message[n] = 6

       elif message[n] == "H" or message[n] == "h":

           message[n] = 7

       elif message[n] == "I" or message[n] == "i":

           message[n] = 8

       elif message[n] == "J" or message[n] == "j":

           message[n] = 9

       elif message[n] == "K" or message[n] == "k":

           message[n] = 10

       elif message[n] == "L" or message[n] == "l":

           message[n] = 11

       elif message[n] == "M" or message[n] == "m":

           message[n] = 12

       elif message[n] == "N" or message[n] == "n":

           message[n] = 13

       elif message[n] == "O" or message[n] == "o":

           message[n] = 14

       elif message[n] == "P" or message[n] == "p":

           message[n] = 15

       elif message[n] == "Q" or message[n] == "q":

           message[n] = 16

       elif message[n] == "R" or message[n] == "r":

           message[n] = 17

       elif message[n] == "S" or message[n] == "s":

           message[n] = 18

       elif message[n] == "T" or message[n] == "t":

           message[n] = 19

       elif message[n] == "U" or message[n] == "u":

           message[n] = 20

       elif message[n] == "V" or message[n] == "v":

           message[n] = 21

       elif message[n] == "W" or message[n] == "w":

           message[n] = 22

       elif message[n] == "X" or message[n] == "x":

           message[n] = 23

       elif message[n] == "Y" or message[n] == "y":

           message[n] = 24

       elif message[n] == "Z" or message[n] == "z":

           message[n] = 25

       elif message[n] == "0":

           message[n] = 26

       elif message[n] == "1":

           message[n] = 27

       elif message[n] == "2":

           message[n] = 28

       elif message[n] == "3":

           message[n] = 29

       elif message[n] == "4":

           message[n] = 30

       elif message[n] == "5":

           message[n] = 31

       elif message[n] == "6":

           message[n] = 32

       elif message[n] == "7":

           message[n] = 33

       elif message[n] == "8":

           message[n] = 34

       elif message[n] == "9":

           message[n] = 35

       else:

           print "Error: Don't enter any spaces, punctuation, or special characters. Please try again. "

           x = 0

           while x == 0:

               pass

       n += 1

   key = input("Enter your encryption key seperated by comas. If you have a one number key put a coma after it. ")

   try:

       key = list(key)

   except:

       TypeError

       print "Remember to seperate the key numbers with comas even if there is only one value. "

       main()

   n = 0

   while n < len(message):

       message[n] += key[n % len(key)]

       if message[n] > 35:

           message[n] = message[n] % 36

       n += 1

   n = 0

   while n < len(message):

       if message[n] == 0:

           message[n] = "A"

       elif message[n] == 1:

           message[n] = "B"

       elif message[n] == 2:

           message[n] = "C"

       elif message[n] == 3:

           message[n] = "D"

       elif message[n] == 4:

           message[n] = "E"

       elif message[n] == 5:

           message[n] = "F"

       elif message[n] == 6:

           message[n] = "G"

       elif message[n] == 7:

           message[n] = "H"

       elif message[n] == 8:

           message[n] = "I"

       elif message[n] == 9:

           message[n] = "J"

       elif message[n] == 10:

           message[n] = "K"

       elif message[n] == 11:

           message[n] = "L"

       elif message[n] == 12:

           message[n] = "M"

       elif message[n] == 13:

           message[n] = "N"

       elif message[n] == 14:

           message[n] = "O"

       elif message[n] == 15:

           message[n] = "P"

       elif message[n] == 16:

           message[n] = "Q"

       elif message[n] == 17:

           message[n] = "R"

       elif message[n] == 18:

           message[n] = "S"

       elif message[n] == 19:

           message[n] = "T"

       elif message[n] == 20:

           message[n] = "U"

       elif message[n] == 21:

           message[n] = "V"

       elif message[n] == 22:

           message[n] = "W"

       elif message[n] == 23:

           message[n] = "X"

       elif message[n] == 24:

           message[n] = "Y"

       elif message[n] == 25:

           message[n] = "Z"

       elif message[n] == 26:

           message[n] = "0"

       elif message[n] == 27:

           message[n] = "1"

       elif message[n] == 28:

           message[n] = "2"

       elif message[n] == 29:

           message[n] = "3"

       elif message[n] == 30:

           message[n] = "4"

       elif message[n] == 31:

           message[n] = "5"

       elif message[n] == 32:

           message[n] = "6"

       elif message[n] == 33:

           message[n] = "7"

       elif message[n] == 34:

           message[n] = "8"

       elif message[n] == 35:

           message[n] = "9"

       n += 1

   message = ''.join(message)

   print message

   main()

main()
Decryption (Python 2.7)
def main():
   message = raw_input("Enter the coded message without spaces. ")
   message = list(message)
   n = 0
   while n < len(message):
       if message[n] == "A" or message[n] == "a":
           message[n] = 0
       elif message[n] == "B" or message[n] == "b":
           message[n] = 1
       elif message[n] == "C" or message[n] == "c":
           message[n] = 2
       elif message[n] == "D" or message[n] == "d":
           message[n] = 3
       elif message[n] == "E" or message[n] == "e":
           message[n] = 4
       elif message[n] == "F" or  message[n] == "f":
           message[n] = 5
       elif message[n] == "G" or message[n] == "g":
           message[n] = 6
       elif message[n] == "H" or message[n] == "h":
           message[n] = 7
       elif message[n] == "I" or message[n] == "i":
           message[n] = 8
       elif message[n] == "J" or message[n] == "j":
           message[n] = 9
       elif message[n] == "K" or message[n] == "k":
           message[n] = 10
       elif message[n] == "L" or message[n] == "l":
           message[n] = 11
       elif message[n] == "M" or message[n] == "m":
           message[n] = 12
       elif message[n] == "N" or message[n] == "n":
           message[n] = 13
       elif message[n] == "O" or message[n] == "o":
           message[n] = 14
       elif message[n] == "P" or message[n] == "p":
           message[n] = 15
       elif message[n] == "Q" or message[n] == "q":
           message[n] = 16
       elif message[n] == "R" or message[n] == "r":
           message[n] = 17
       elif message[n] == "S" or message[n] == "s":
           message[n] = 18
       elif message[n] == "T" or message[n] == "t":
           message[n] = 19
       elif message[n] == "U" or message[n] == "u":
           message[n] = 20
       elif message[n] == "V" or message[n] == "v":
           message[n] = 21
       elif message[n] == "W" or message[n] == "w":
           message[n] = 22
       elif message[n] == "X" or message[n] == "x":
           message[n] = 23
       elif message[n] == "Y" or message[n] == "y":
           message[n] = 24
       elif message[n] == "Z" or message[n] == "z":
           message[n] = 25
       elif message[n] == "0":
           message[n] = 26
       elif message[n] == "1":
           message[n] = 27
       elif message[n] == "2":
           message[n] = 28
       elif message[n] == "3":
           message[n] = 29
       elif message[n] == "4":
           message[n] = 30
       elif message[n] == "5":
           message[n] = 31
       elif message[n] == "6":
           message[n] = 32
       elif message[n] == "7":
           message[n] = 33
       elif message[n] == "8":
           message[n] = 34
       elif message[n] == "9":
           message[n] = 35
       else:
           print "Error: Don't enter any spaces, punctuation, or special characters. Please try again. "
           x = 0
           while x == 0:
               pass
       n += 1

   key = input("Enter your encryption key seperated by comas. If you have a one number key put a coma after it. ")
   try:
       key = list(key)
   except TypeError:
       print "Remember to seperate the numbers of your key with comas, even if the key is only one number long. "
       main()    
   n = 0
   while n < len(message):
       message[n] = message[n] - key[n % len(key)]
       while message[n] < 0:
           message[n] += 36
       if message[n] > 35:
           message[n] = message[n] % 36

       n += 1
       
   n = 0
   while n < len(message):
       if message[n] == 0:
           message[n] = "A"
       elif message[n] == 1:
           message[n] = "B"
       elif message[n] == 2:
           message[n] = "C"
       elif message[n] == 3:
           message[n] = "D"
       elif message[n] == 4:
           message[n] = "E"
       elif message[n] == 5:
           message[n] = "F"
       elif message[n] == 6:
           message[n] = "G"
       elif message[n] == 7:
           message[n] = "H"
       elif message[n] == 8:
           message[n] = "I"
       elif message[n] == 9:
           message[n] = "J"
       elif message[n] == 10:
           message[n] = "K"
       elif message[n] == 11:
           message[n] = "L"
       elif message[n] == 12:
           message[n] = "M"
       elif message[n] == 13:
           message[n] = "N"
       elif message[n] == 14:
           message[n] = "O"
       elif message[n] == 15:
           message[n] = "P"
       elif message[n] == 16:
           message[n] = "Q"
       elif message[n] == 17:
           message[n] = "R"
       elif message[n] == 18:
           message[n] = "S"
       elif message[n] == 19:
           message[n] = "T"
       elif message[n] == 20:
           message[n] = "U"
       elif message[n] == 21:
           message[n] = "V"
       elif message[n] == 22:
           message[n] = "W"
       elif message[n] == 23:
           message[n] = "X"
       elif message[n] == 24:
           message[n] = "Y"
       elif message[n] == 25:
           message[n] = "Z"
       elif message[n] == 26:
           message[n] = "0"
       elif message[n] == 27:
           message[n] = "1"
       elif message[n] == 28:
           message[n] = "2"
       elif message[n] == 29:
           message[n] = "3"
       elif message[n] == 30:
           message[n] = "4"
       elif message[n] == 31:
           message[n] = "5"
       elif message[n] == 32:
           message[n] = "6"
       elif message[n] == 33:
           message[n] = "7"
       elif message[n] == 34:
           message[n] = "8"
       elif message[n] == 35:
           message[n] = "9"
       n += 1
   message = ''.join(message)
   print message
   main()
main()
Reply
#2
(Jun-05-2017, 03:15 AM)Iskuss Wrote: Encryption (Python 2.7)
def main():
   message = raw_input("Enter a message without spaces or punctuation. ")
   message = list(message)
   n = 0
   while n < len(message):
       if message[n] == "A" or message[n] == "a":
           message[n] = 0
......

You work too hard  Naughty - Python is for lazy people  Dance
coding_base = ord('a')
if message.isalnum():
   message = [ord(c.lower()) - ord('a') if c.isalpha() else int(c) + 26 for c in message]
else:
   ......
BTW - your code should cause exception, because you cannot change string - it's immutable
Test everything in a Python shell (iPython, Azure Notebook, etc.)
  • Someone gave you an advice you liked? Test it - maybe the advice was actually bad.
  • Someone gave you an advice you think is bad? Test it before arguing - maybe it was good.
  • You posted a claim that something you did not test works? Be prepared to eat your hat.
Reply
#3
(Jun-05-2017, 04:43 AM)volcano63 Wrote: BTW - your code should cause exception, because you cannot change string - it's immutable
OP reuses the variable but change the type with a list() call.
Reply
#4
(Jun-05-2017, 05:41 AM)micseydel Wrote:
(Jun-05-2017, 04:43 AM)volcano63 Wrote: BTW - your code should cause exception, because you cannot change string - it's immutable
OP reuses the variable but change the type with a list() call.

Missed that part - in all the spaghetti serving Wall Tongue
Test everything in a Python shell (iPython, Azure Notebook, etc.)
  • Someone gave you an advice you liked? Test it - maybe the advice was actually bad.
  • Someone gave you an advice you think is bad? Test it before arguing - maybe it was good.
  • You posted a claim that something you did not test works? Be prepared to eat your hat.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Encryption program andrei 1 2,165 May-12-2022, 06:18 AM
Last Post: ndc85430

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020