[Tutor] Decrypting a Password

Linda Gray lrglinda at gmail.com
Sat Oct 8 20:50:53 EDT 2016


Hello,

I am working on a homework assignment that has me creating a password saver
using a ceasar cipher code.  I was provided the key to the cipher and two
passwords.  I need to look up and decrypt the passwords and create a
program to add a password and delete a password (options 2, 3 and 7).  I
had no problems adding a password.  I am also having no problems looking up
a password but am havving problems decrypting the password. I can only get
it to provide me the give, encrypted password and not the unencrypted one
which is the one I need to provide.  I am not getting any errors, it is
just not doing anything that I can see.  I am getting the following error
with the deleting a password.

Traceback (most recent call last):
  File "C:/Users/lrgli/Desktop/Python Programs/Password test file.py", line
187, in <module>
    passwords.remove (passwordToDelete)
ValueError: list.remove(x): x not in list

Any assistance, guidance, pointers would be appreciated.  Is my indentation
wrong for the decryption, am I missing something connecting the two, etc.?
I feel like I am close.  It is python version 3.

Here is my code:

import csv
import sys

#The password list - We start with it populated for testing purposes
passwords = [["yahoo","XqffoZeo"],["google","CoIushujSetu"]]


#The password file name to store the passwords to
passwordFileName = "samplePasswordFile"

#The encryption key for the caesar cypher
encryptionKey=16

#Caesar Cypher Encryption
def passwordEncrypt (unencryptedMessage, key):

    #We will start with an empty string as our encryptedMessage
    encryptedMessage = ''

    #For each symbol in the unencryptedMessage we will add an
encrypted symbol into the encryptedMessage
    for symbol in unencryptedMessage:
        if symbol.isalpha():
            num = ord(symbol)
            num += key

            if symbol.isupper():
                if num > ord('Z'):
                    num -= 26
                elif num < ord('A'):
                    num += 26
            elif symbol.islower():
                if num > ord('z'):
                    num -= 26
                elif num < ord('a'):
                    num += 26

            encryptedMessage += chr(num)
        else:
            encryptedMessage += symbol

    return encryptedMessage

def loadPasswordFile(fileName):

    with open(fileName, newline='') as csvfile:
        passwordreader = csv.reader(csvfile)
        passwordList = list(passwordreader)

    return passwordList

def savePasswordFile(passwordList, fileName):

    with open(fileName, 'w+', newline='') as csvfile:
        passwordwriter = csv.writer(csvfile)
        passwordwriter.writerows(passwordList)



while True:
    print("What would you like to do:")
    print(" 1. Open password file")
    print(" 2. Lookup a password")
    print(" 3. Add a password")
    print(" 4. Save password file")
    print(" 5. Print the encrypted password list (for testing)")
    print(" 6. Quit program")
    print(" 7. Delete a password")
    print("Please enter a number (1-4 or 7)")
    choice = input()

    if(choice == '1'): #Load the password list from a file
        passwords = loadPasswordFile(passwordFileName)

    if(choice == '2'): #Lookup at password
        print("Which website do you want to lookup the password for?")
        for keyvalue in passwords:
            print(keyvalue[0])
        passwordToLookup = input()

        for i in range(len(passwords)):  #  This loops through my list
of passwords
            if passwordToLookup in passwords [i][0]:  #this says what
matches up the website you input with the website in the lists of
passwords
                  # print (passwords[i][1])  #this prints the encrypted password

                   #The encryption key for the caesar cypher
                   deencryptionKey=16

                   #Caesar Cypher Encryption
                   def passwordunEncrypt (encryptedMessage, key):

                       #We will start with an empty string as our
encryptedMessage
                       unencryptedMessage = ''

                       #For each symbol in the unencryptedMessage we
will add an encrypted symbol into the encryptedMessage
                       for symbol in encryptedMessage:
                           if symbol.isalpha():
                               num = ord(symbol)
                               num -= key

                           if symbol.isupper():
                               if num > ord('Z'):
                                   num -= 26
                               elif num < ord('A'):
                                   num += 26
                               elif symbol.islower():
                                   if num > ord('z'):
                                       num -= 26
                               elif num < ord('a'):
                                   num += 26

                           unencryptedMessage += chr(num)
                       else:
                            unencryptedMessage += symbol

                       return unencryptedMessage
                       print(passwordunEncrypt(passwords[i][1], 16))




    if(choice == '3'):
        print("What website is this password for?")
        website = input()
        print("What is the password?")
        unencryptedPassword = input()

        encryptedPassword = passwordEncrypt
(unencryptedPassword,encryptionKey)  # This encrypts the password you
just entered

        newwebsitepassword = [website, encryptedPassword]  # This
creates my list of 2 items, website and password

        passwords.append(newwebsitepassword)  #This adds this to the
password list


    if(choice == '4'): #Save the passwords to a file
            savePasswordFile(passwords,passwordFileName)


    if(choice == '5'): #print out the password list
        for keyvalue in passwords:
            print(', '.join(keyvalue))

    if(choice == '6'):  #quit our program
        sys.exit()


    if (choice == '7'):  #delete a password
      print ("What website password would you like to delete?")

      for keyvalue in passwords:
            print(keyvalue[0])
      passwordToDelete = input()

      for i in range(len(passwords)):  #  This loops through my list
of passwords
            if passwordToDelete in passwords [i][0]:  #this says what
matches up the website you input withthe website in the lists of
passwords
               passwords.remove (passwordToDelete)




    print()
    print()


More information about the Tutor mailing list