[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