Python Forum
Password Saver Program
Thread Rating:
  • 1 Vote(s) - 4 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Password Saver Program
#1
I have an assignment to write code for Choice 2, to 1. create a loop that goes through each item in the password list; 2. Check if the name is found; 3. if the name is found, decrypt it. Some of the instructions are already in the code and the code that I have attempted is located right after the ###### YOUR CODE HERE ###### entry. For Choice 3, I need to encrypt the password and store it in the list of passwords. I have also entered code for Choice 3 but it is also not working. Any help you can give me would be greatly appreciate.

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

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()

####### YOUR CODE HERE ######
for i in range (len(passwords)): #Create a loop that goes through each item in the password list
i = [0, 1]

#You will need to find the password that matches the website
#You will then need to decrypt the password
#
#1. Create a loop that goes through each item in the password list
# You can consult the reading on lists in Week 5 for ways to loop through a list
#
#2. Check if the name is found. To index a list of lists you use 2 square backet sets
# So passwords[0][1] would mean for the first item in the list get it's 2nd item (remember, lists start at 0)
# So this would be 'XqffoZeo' in the password list given what is predefined at the top of the page.
# If you created a loop using the syntax described in step 1, then i is your 'iterator' in the list so you
# will want to use i in your first set of brackets.
#
#3. If the name is found then decrypt it. Decrypting is that exact reverse operation from encrypting. Take a look at the
# caesar cypher lecture as a reference. You do not need to write your own decryption function, you can reuse passwordEncrypt
#
# Write the above one step at a time. By this I mean, write step 1... but in your loop print out every item in the list
# for testing purposes. Then write step 2, and print out the password but not decrypted. Then write step 3. This way
# you can test easily along the way.
#
####### YOUR CODE HERE ######


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

####### YOUR CODE HERE ######
#You will need to encrypt the password and store it in the list of passwords

#The encryption function is already written for you
#Step 1: You can say encryptedPassword = passwordEncrypt(unencryptedPassword,encryptionKey)]
#the encryptionKey variable is defined already as 16, don't change this
#Step 2: create a list of size 2, first item the website name and the second item the password.
#Step 3: append the list from Step 2 to the password list

encryptedpassword = passwordEncrypt(unencryptedPassword, encryptionKey)
newPassword = [[website, encryptedpassword]]
passwords.append(newPassword)

####### YOUR CODE HERE ######
Reply
#2
You need to show us what you've tried, and exactly how it's not working (the full error message or how the output differs from what you expected). Then we will help you fix the problem.
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures
Reply
#3
Hello,
Here is the entire code for the Password Saver assignment. When I enter choice 2, I enter the website name and press enter and this is the error I receive.

What would you like to do:
1. Open password file
2. Lookup a password
3. Add a password
4. Save password file
5. Print the encrypted password list (for testing)
6. Quit program
Please enter a number (1-4)
2
Which website do you want to lookup the password for?
yahoo
google
yahoo
Traceback (most recent call last):
File "C:/Users/CynthiaL/Documents/Champlain College - Cindy/INTRO TO COMPUTER SYSTEMS/untitled15/Password Saver.py", line 122, in <module>
encryptedpassword = passwordEncrypt(unencryptedPassword, encryptionKey)
NameError: name 'unencryptedPassword' is not defined

Process finished with exit code 1
I have put the following code in for Choice 3 but I don't know if it will work since I get the above error. Here is the code I have entered for choice 3 to encrypt the password and store it in the list of passwords.

encryptedpassword = passwordEncrypt(unencryptedPassword, encryptionKey)
newPassword = [[website, encryptedpassword]]
passwords.append(newPassword)

Thank you in advance for any help you can give me.
Cindy

Password Saver.py
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("Please enter a number (1-4)")
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()

####### YOUR CODE HERE ######
#You will need to find the password that matches the website
#You will then need to decrypt the password
#
#1. Create a loop that goes through each item in the password list
# You can consult the reading on lists in Week 5 for ways to loop through a list
#
for i in range (len(passwords)): #Create a loop that goes through each item in the password list
i = [0, 1]

#2. Check if the name is found. To index a list of lists you use 2 square backet sets
# So passwords[0][1] would mean for the first item in the list get it's 2nd item (remember, lists start at 0)
# So this would be 'XqffoZeo' in the password list given what is predefined at the top of the page.
# If you created a loop using the syntax described in step 1, then i is your 'iterator' in the list so you
# will want to use i in your first set of brackets.
#
#3. If the name is found then decrypt it. Decrypting is that exact reverse operation from encrypting. Take a look at the
# caesar cypher lecture as a reference. You do not need to write your own decryption function, you can reuse passwordEncrypt
#
# Write the above one step at a time. By this I mean, write step 1... but in your loop print out every item in the list
# for testing purposes. Then write step 2, and print out the password but not decrypted. Then write step 3. This way
# you can test easily along the way.
#


####### YOUR CODE HERE ######


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

####### YOUR CODE HERE ######
#You will need to encrypt the password and store it in the list of passwords

#The encryption function is already written for you
#Step 1: You can say encryptedPassword = passwordEncrypt(unencryptedPassword,encryptionKey)]
#the encryptionKey variable is defined already as 16, don't change this
#Step 2: create a list of size 2, first item the website name and the second item the password.
#Step 3: append the list from Step 2 to the password list

encryptedpassword = passwordEncrypt(unencryptedPassword, encryptionKey)
newPassword = [[website, encryptedpassword]]
passwords.append(newPassword)

####### YOUR CODE HERE ######

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()

print()
print()
Reply
#4
The code you are posting is of no use. Without the minimum of indenting, we have no way of knowing what your intent is.
If it ain't broke, I just haven't gotten to it yet.
OS: Windows 10, openSuse 42.3, freeBSD 11, Raspian "Stretch"
Python 3.6.5, IDE: PyCharm 2018 Community Edition
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Python Password Saver Assignment sshellzr21 2 6,229 May-02-2020, 01:34 AM
Last Post: sshellzr21
  Password Saver Project jhenry 15 14,863 Oct-13-2017, 08:30 AM
Last Post: gruntfutuk

Forum Jump:

User Panel Messages

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