-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEncryptor.py
More file actions
201 lines (142 loc) · 8.09 KB
/
Encryptor.py
File metadata and controls
201 lines (142 loc) · 8.09 KB
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
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
# coding: utf-8
import tkinter as tk
from tkinter import messagebox, ttk
from tkinter import *
def main_program():
def load_encryption_dict():
encryption_dict = {}
with open('binary.txt', 'r', encoding='utf-8') as file:
for line in file:
char, binary_char = line.strip().split(':')
char = char.strip()
binary_char = binary_char.strip()
if len(char) > 1:
char = char.decode('unicode_escape')
encryption_dict[char] = binary_char
if char.islower():
encryption_dict[char.upper()] = binary_char
if char.startswith("\\"):
punctuation = char[1:]
encryption_dict[punctuation] = binary_char
if char.isdigit():
encryption_dict[str(char)] = binary_char
return encryption_dict
def exit_pr():
root.quit()
def help():
messagebox.showinfo('assistance', """Здравствуйте!
Рад представить вам программу «Encryptor» — простой и надежный инструмент для шифрования текста.
Программа по умолчанию шифрует текст в двоичном формате и сохраняет его в файле «binary.txt». Однако вы можете легко изменить кодировку символов, просто отредактировав этот файл вручную. Это значит, что, обменявшись файлом «binary.txt» с собеседником безопасным способом, вы сможете надежно защитить свою переписку от посторонних глаз.
«Encryptor» позволяет вам настраивать шифрование, предоставляя вам полный контроль над безопасностью ваших данных.
Надеюсь, программа поможет вам сохранить конфиденциальность и спокойствие в общении!
С уважением,
Создатель программы""")
def donate():
messagebox.showinfo('Поддержать разработчика', 'Скоро...')
def encrypt():
message = entry.get('1.0', tk.END).strip()
encryption_dict = load_encryption_dict()
binary_message = ''
for char in message:
if char == ' ':
binary_message += '00100000 '
continue
if char in encryption_dict:
binary_message += encryption_dict[char] + ' '
else:
binary_message += char
output.delete('1.0', tk.END)
output.insert(tk.END, binary_message)
def decrypt():
binary_message = entry.get('1.0', tk.END).strip()
encryption_dict = load_encryption_dict()
text_message = ''
binary_chars = binary_message.split()
for binary_char in binary_chars:
if binary_char == '00100000':
text_message += ' '
continue
for char, binary in encryption_dict.items():
if binary == binary_char:
text_message += char
output.delete('1.0', tk.END)
output.insert(tk.END, text_message)
def copy_text():
text = output.get('1.0', tk.END).strip()
if text:
root.clipboard_clear()
root.clipboard_append(text)
def paste_text():
text = root.clipboard_get()
entry.insert(tk.END, text)
def clear_text():
entry.delete('1.0', tk.END)
root = tk.Tk()
root.title('Encryptor v. 1.1 release')
root.geometry('350x360')
mainmenu = tk.Menu()
submenu = tk.Menu(tearoff=0)
submenu.add_command(label='Помощь', command=help)
submenu.add_command(label='Поддержать разработчика', command=donate)
mainmenu.add_cascade(label='Другое', menu=submenu)
label = tk.Label(root, text='\nБерегите свою безопасность\n', foreground='#FF00FF', font=('Arial', 10))
label.pack()
entry = tk.Text(root, height=5, width=30)
entry.pack()
encrypt_button = ttk.Button(root, text='Шифровать', command=encrypt)
encrypt_button.pack()
decrypt_button = ttk.Button(root, text='Расшифровать', command=decrypt)
decrypt_button.pack()
output = tk.Text(root, height=5, width=30)
output.pack()
copy_button = ttk.Button(root, text='Копировать', command=copy_text)
copy_button.pack()
paste_button = ttk.Button(root, text='Вставить', command=paste_text)
paste_button.pack()
clear_button = ttk.Button(root, text='Очистить', command=clear_text)
clear_button.pack()
root.config(menu=mainmenu)
root.mainloop()
def accept_license():
messagebox.showinfo("Принять", "Лицензионное соглашение принято.")
root.destroy()
main_program()
def reject_license():
messagebox.showwarning("Отклонить", "Лицензионное соглашение отклонено.")
root.destroy()
root = tk.Tk()
root.title("Лицензионное соглашение")
root.geometry("1200x800")
canvas = tk.Canvas(root)
canvas.pack(side="left", fill="both", expand=True)
scrollbar = tk.Scrollbar(root, command=canvas.yview)
scrollbar.pack(side="right", fill="y")
canvas.configure(yscrollcommand=scrollbar.set)
frame = tk.Frame(canvas)
canvas.create_window((0, 0), window=frame, anchor="nw")
license_text = """Лицензионное соглашение на использование программного обеспечения «Encryptor»
1. Общие положения
Программное обеспечение «Encryptor» (далее — «Программа») предоставляется пользователю бесплатно на условиях настоящего лицензионного соглашения (далее — «Соглашение»).
2. Разрешение на использование
Пользователь получает право использовать Программу бесплатно.
3. Ограничения
Пользователь соглашается:
Не использовать Программу в противоправных целях, включая, но не ограничиваясь, нарушением законодательства, взломом информационных систем, распространением вредоносного ПО или сокрытием противоправной деятельности.
4. Отказ от ответственности
Программа предоставляется «как есть» без каких-либо гарантий. Разработчик не несет ответственности за возможный ущерб, причиненный использованием или невозможностью использования Программы.
5. Принятие соглашения
Нажимая кнопку «Принять», пользователь соглашается со всеми пунктами настоящего соглашения и получает возможность использовать ее на условиях настоящего соглашения.
"""
text_widget = tk.Text(frame, wrap="word")
text_widget.insert("1.0", license_text)
text_widget.config(state="disabled")
text_widget.pack(fill="both", expand=True)
accept_button = tk.Button(root, text="Принять", command=accept_license)
accept_button.pack(side="left")
reject_button = tk.Button(root, text="Отклонить", command=reject_license)
reject_button.pack(side="right")
text_widget.config(height=50, width=130)
def update_canvas(event):
canvas.configure(scrollregion=canvas.bbox("all"))
root.bind("<Configure>", update_canvas)
root.mainloop()