forked from RadiantCoding/Code
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEncrypt Vid (AFTER CODE).py
173 lines (163 loc) · 6.27 KB
/
Encrypt Vid (AFTER CODE).py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
import tkinter as tk
from tkinter.font import Font
from cryptography.fernet import Fernet
import mysql.connector
import csv
import random
# Connect MySQL
if True:
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password123",
database="cafefishdb"
)
mycursor=mydb.cursor()
#Create Table
mycursor.execute("""CREATE TABLE IF NOT EXISTS usercredentials(username VARCHAR(255),password VARCHAR(255),userID int)""")
mycursor.execute("""CREATE TABLE IF NOT EXISTS customer(userID int,firstname VARCHAR(255),secondname VARCHAR(255))""")
#Obtaining Encryption Key
#Open Text File
with open("Keys.txt","r") as csvfile:
reader=csv.reader(csvfile)
KeyFound=0
for row in reader:
try:
print(row[0])
except IndexError:
continue
if len(row[0])>4:
KeyFound=1
Key=row[0]
else:
pass
if KeyFound==0:
Key= Fernet.generate_key()
csvfile.close()
if KeyFound==0:
with open("Keys.txt","w") as csvfile:
headers =['key']
writer = csv.DictWriter(csvfile,fieldnames=headers)
writer.writeheader()
writer.writerow({'key': Key.decode('utf-8')})
csvfile.close()
print(Key)
Ecy = Fernet(Key)
csvfile.close()
#Declare Root
root = tk.Tk()
root.title("Login System")
#Define Frames
loginFrame=tk.Frame(root)
registerFrame=tk.Frame(root)
customerFrame=tk.Frame(root)
frameList=[loginFrame,registerFrame,customerFrame]
#Configure all Frames
for frame in frameList:
frame.grid(row=0,column=0, sticky='news')
frame.configure(bg='white')
#Frame Raise Function
def raiseFrame(frame):
frame.tkraise()
#Move To Reg Function
def moveToReg():
raiseFrame(registerFrame)
def moveToLog():
raiseFrame(loginFrame)
def login():
mycursor.execute("SELECT * FROM usercredentials")
myresults=mycursor.fetchall()
for record in myresults:
b = bytes(record[1], 'utf-8')
decryptedPassword=str(Ecy.decrypt(b))
decryptedPassword = decryptedPassword.strip("b'")
print("Password:")
print(decryptedPassword)
if inputedPassword.get()==decryptedPassword and inputedUsername.get()==record[0]:
selectData="SELECT firstname,secondname FROM customer WHERE userID=%s"
mycursor.execute(selectData,(record[2],))
myresults=mycursor.fetchone()
tempVar="Welcome",myresults[0],myresults[1]
greetings.set(tempVar)
raiseFrame(customerFrame)
else:
print("Not Found")
pass
def register():
userID=random.randint(1,5000)
b = bytes(inputedPassword.get(),'utf-8')
encryptedPassword = Ecy.encrypt(b)
userInsert="""INSERT INTO usercredentials (username,password,userID) VALUES(%s,%s,%s)"""
mycursor.execute(userInsert,(inputedUsername.get(),encryptedPassword,userID))
mydb.commit()
custInsert="""INSERT INTO customer (userID,firstname,secondname) VALUES (%s,%s,%s)"""
mycursor.execute(custInsert,(userID,inputedFirstName.get(),inputedSecondName.get()))
mydb.commit()
raiseFrame(loginFrame)
inputedFirstName.set("")
inputedSecondName.set("")
inputedUsername.set("")
inputedPassword.set("")
#Tkinter Vars
inputedUsername=tk.StringVar()
inputedPassword=tk.StringVar()
inputedFirstName=tk.StringVar()
inputedSecondName=tk.StringVar()
greetings=tk.StringVar()
greetings.set("")
#Fonts
titleFont = Font(family="Arial", size="48")
labelFont = Font(family="Arial", size="24")
buttonFont =Font(family="Arial",size = "20")
#Login Frame Widgets
#Labels
titleLabel=tk.Label(loginFrame,text="System Name",font=titleFont,fg='green',bg='white')
titleLabel.grid(row=1,column=1,columnspan=5)
helplogLabel=tk.Label(loginFrame,text="Fill in the fields below to Login \n or Register a new account",bg='white')
helplogLabel.grid(row=2,column=1,columnspan=5)
usernameLabel=tk.Label(loginFrame,text="Input Username: ",fg="black",font=labelFont,bg='white')
usernameLabel.grid(row=3,column=1)
passwordLabel=tk.Label(loginFrame,text="Input Password: ",fg="black",font=labelFont,bg='white')
passwordLabel.grid(row=4,column=1)
#Entry
usernameEntry=tk.Entry(loginFrame,textvariable=inputedUsername,font=labelFont)
usernameEntry.grid(row=3,column=2,columnspan=2)
passwordEntry=tk.Entry(loginFrame,textvariable=inputedPassword,font=labelFont,show='*')
passwordEntry.grid(row=4,column=2,columnspan=2)
#Buttons
loginButton=tk.Button(loginFrame,command=login,font=buttonFont,text='Login')
loginButton.grid(row=5,column=2)
moveToRegButton=tk.Button(loginFrame,command=moveToReg,font=buttonFont,text='Register')
moveToRegButton.grid(row=5,column=1)
#Register Frame Widgets
titleRegLabel=tk.Label(registerFrame,text="Register",font=titleFont,fg='green',bg='white')
titleRegLabel.grid(row=1,column=1,columnspan=5)
helpregLabel=tk.Label(registerFrame,text="Fill in the fields below to Register",bg='white')
helpregLabel.grid(row=2,column=1,columnspan=5)
firstNameLabel=tk.Label(registerFrame,text="First Name: ",fg="black",font=labelFont,bg='white')
firstNameLabel.grid(row=3,column=1)
secondNameLabel=tk.Label(registerFrame,text="Second Name: ",fg="black",font=labelFont,bg='white')
secondNameLabel.grid(row=4,column=1)
usernameRegLabel=tk.Label(registerFrame,text="Username: ",fg="black",font=labelFont,bg='white')
usernameRegLabel.grid(row=5,column=1)
passwordRegLabel=tk.Label(registerFrame,text="Password: ",fg="black",font=labelFont,bg='white')
passwordRegLabel.grid(row=6,column=1)
#Entry Widgets
firstNameLabel=tk.Entry(registerFrame,textvariable=inputedFirstName,fg="black",font=labelFont,bg='white')
firstNameLabel.grid(row=3,column=2)
secondNameLabel=tk.Entry(registerFrame,textvariable=inputedSecondName,fg="black",font=labelFont,bg='white')
secondNameLabel.grid(row=4,column=2)
usernameRegLabel=tk.Entry(registerFrame,textvariable=inputedUsername,fg="black",font=labelFont,bg='white')
usernameRegLabel.grid(row=5,column=2)
passwordRegLabel=tk.Entry(registerFrame,textvariable=inputedPassword,fg="black",font=labelFont,bg='white',show='*')
passwordRegLabel.grid(row=6,column=2)
#Buttons
backButton=tk.Button(registerFrame,command=moveToLog,font=buttonFont,text='Back')
backButton.grid(row=7,column=1)
regButton=tk.Button(registerFrame,command=register,font=buttonFont,text='Register')
regButton.grid(row=7,column=2)
#Customer Frame Widgets
titleCLabel=tk.Label(customerFrame,textvariable=greetings,font=titleFont,fg='green',bg='white')
titleCLabel.grid(row=1,column=1,columnspan=5)
raiseFrame(loginFrame)
root.mainloop()