-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
Copy pathcrypto.py
117 lines (94 loc) · 2.78 KB
/
crypto.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
from tkinter import Tk
from tkinter import Label
from tkinter import BOTTOM
from tkinter import StringVar
from tkinter import Entry
from tkinter import Button
import base64
# initialize window
root = Tk()
root.geometry('500x300')
root.resizable(0, 0)
# title of the window
root.title("Cryptography World")
# label
Label(root, text='ENCODE DECODE', font='arial 20 bold').pack()
Label(root, text='By Anushka Chitranshi',
font='arial 20 bold').pack(side=BOTTOM)
# define variables
Text = StringVar()
private_key = StringVar()
mode = StringVar()
Result = StringVar()
# function to encode
def Encode(key, message):
"""Encode the message."""
enc = []
for i in enumerate(message):
key_c = key[i % len(key)]
enc.append(chr((ord(message[i]) + ord(key_c)) % 256))
return base64.urlsafe_b64encode("".join(enc).encode()).decode()
# function to decode
def Decode(key, message):
"""Decode the message."""
dec = []
message = base64.urlsafe_b64decode(message).decode()
for i in enumerate(message):
key_c = key[i % len(key)]
dec.append(chr((256 + ord(message[i]) - ord(key_c)) % 256))
return "".join(dec)
# function to set mode
def Mode():
"""Take mode of cryptography."""
if mode.get() == 'e':
Result.set(Encode(private_key.get(), Text.get()))
elif mode.get() == 'd':
Result.set(Decode(private_key.get(), Text.get()))
else:
Result.set('Invalid Mode')
# Function to exit window
def Exit():
"""Exit the window."""
root.destroy()
# Function to reset
def Reset():
"""Reset the screen."""
Text.set("")
private_key.set("")
mode.set("")
Result.set("")
Label(
root, font='arial 12 bold', text='MESSAGE'
).place(x=60, y=60)
Entry(
root, font='arial 10', textvariable=Text, bg='ghost white'
).place(x=290, y=60)
# key
Label(root, font='arial 12 bold', text='KEY').place(x=60, y=90)
Entry(
root, font='arial 10', textvariable=private_key, bg='ghost white'
).place(x=290, y=90)
# mode
Label(
root, font='arial 12 bold', text='MODE(e-encode, d-decode)'
).place(x=60, y=120)
Entry(
root, font='arial 10', textvariable=mode, bg='ghost white'
).place(x=290, y=120)
# result
Entry(
root, font='arial 10 bold', textvariable=Result, bg='ghost white'
).place(x=290, y=150)
# result button
Button(
root, font='arial 10 bold', text='RESULT', padx=2, bg='LightGray', command=Mode
).place(x=60, y=150)
# reset button
Button(
root, font='anson', text='RESET', width=6, command=Reset, bg='Green', padx=2
).place(x=80, y=190)
# exit button
Button(
root, font='anson', text='EXIT', width=6, command=Exit, bg='Red', padx=2, pady=2
).place(x=180, y=190)
root.mainloop()