Omnibus commited on
Commit
c17ad5f
·
0 Parent(s):

Duplicate from Omnibus/Fernet-Encryption

Browse files
Files changed (3) hide show
  1. .gitattributes +35 -0
  2. README.md +13 -0
  3. app.py +169 -0
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: Fernet Encryption
3
+ emoji: 📊
4
+ colorFrom: pink
5
+ colorTo: green
6
+ sdk: gradio
7
+ sdk_version: 3.42.0
8
+ app_file: app.py
9
+ pinned: false
10
+ duplicated_from: Omnibus/Fernet-Encryption
11
+ ---
12
+
13
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
app.py ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import gradio as gr
3
+ from cryptography.fernet import Fernet
4
+ from cryptography.hazmat.primitives import hashes
5
+ from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
6
+ import os
7
+ import base64
8
+ import hashlib
9
+ from pathlib import Path
10
+
11
+
12
+ def create_key(passw):
13
+ key = passw.encode()
14
+ h = hashlib.new('sha256')
15
+ h.update(key)
16
+ key = h.hexdigest()
17
+ key = key.encode()
18
+ #salt = os.urandom(16)
19
+ salt = key
20
+ kdf = PBKDF2HMAC(
21
+ algorithm=hashes.SHA256(),
22
+ length=32,
23
+ salt=salt,
24
+ iterations=480000,
25
+ )
26
+ key = base64.urlsafe_b64encode(kdf.derive(key))
27
+
28
+ return key
29
+
30
+
31
+ def encrypt(passw=None,mes=None,img=None,doc=None):
32
+ #key = Fernet.generate_key()
33
+ key = create_key(passw)
34
+ fernet = Fernet(key)
35
+ enc_mes=None
36
+ enc_file=None
37
+ if mes != None and mes != "":
38
+ bytes_m = mes.encode()
39
+ enc_mes = fernet.encrypt(bytes_m)
40
+ enc_mes = f'{enc_mes}+aaa+'
41
+ if img != None:
42
+ with open(f'{img}', "rb") as image_file:
43
+ bytes_i = base64.b64encode(image_file.read())
44
+ if mes != None and mes != "":
45
+ im_bytes = fernet.encrypt(bytes_i)
46
+ enc_mes = f'{enc_mes}{im_bytes}+bbb+'
47
+ else:
48
+ enc_mes = f'{im_bytes}+bbb+'
49
+
50
+ if doc != None:
51
+
52
+ print(dir(doc))
53
+ print(doc.name)
54
+ #print(doc.file)
55
+ doc_name = doc.name
56
+ doc_name = doc_name.split("/",4)[4]
57
+ #bytes_d = doc.encode()
58
+
59
+ #doc = Path(doc)
60
+ with open(doc.name, "rb") as file:
61
+ # read all file data
62
+ file_data = file.read()
63
+ enc_doc = fernet.encrypt(file_data)
64
+ og_name = doc.name
65
+ og_end = og_name.split(".",1)[1]
66
+ og_front=og_name.split(".",1)[0]
67
+
68
+
69
+ enc_file=f'{doc.name}.ocrpt'
70
+ with open(enc_file, "wb") as file:
71
+ file.write(enc_doc)
72
+
73
+ return enc_mes,enc_file
74
+
75
+ def decrypt(passw=None,enc_in=None):
76
+ key = create_key(passw)
77
+ fernet = Fernet(key)
78
+ dec_im = None
79
+ mes_dec= None
80
+ enc_in=enc_in.strip('"')
81
+ print (f'enc_in :::: {enc_in}')
82
+
83
+ if "+aaa+" in enc_in:
84
+ mes1=enc_in.split("+aaa+",1)[0]
85
+ mes1=mes1.strip("b'").strip("'")
86
+ mes_bytes = bytes(mes1,'utf-8')
87
+ mes_dec = fernet.decrypt(mes_bytes).decode()
88
+ if "+bbb+" in enc_in:
89
+ mes12=enc_in.split("+aaa+",1)[1]
90
+ mes2=mes12.split("+bbb+",1)[0]
91
+ mes2=mes2.strip("b'").strip("'")
92
+ im_bytes = bytes(mes2,'utf-8')
93
+ print(f'im_bytes::{im_bytes}')
94
+
95
+ mes2 = fernet.decrypt(mes2).decode()
96
+ #base = bytes(decMessage, 'utf-8')
97
+ with open(f"finished_im.png", "wb") as fh:
98
+ #fh.write(base64.decodebytes(im_bytes))
99
+ fh.write(base64.decodebytes(bytes(mes2, 'utf-8')))
100
+ fh.close
101
+ dec_im = "finished_im.png"
102
+
103
+ if not "+aaa+" in enc_in:
104
+ if "+bbb+" in enc_in:
105
+ mes2 = enc_in.split("+bbb+",1)[0]
106
+ mes2=mes2.strip("b'").strip("'")
107
+ im_bytes = bytes(mes2,'utf-8')
108
+ print(f'im_bytes2::{im_bytes}')
109
+ mes2 = fernet.decrypt(mes2).decode()
110
+
111
+ #base = bytes(decMessage, 'utf-8')
112
+ with open(f"finished_im.png", "wb") as fh:
113
+ #fh.write(base64.decodebytes(im_bytes))
114
+ fh.write(base64.decodebytes(bytes(mes2, 'utf-8')))
115
+ fh.close
116
+ dec_im = "finished_im.png"
117
+
118
+
119
+ return(dec_im,mes_dec)
120
+ def decode_doc(passw=None,doc=None):
121
+ key = create_key(passw)
122
+ fernet = Fernet(key)
123
+ doc_name = doc.name
124
+ doc_name = doc_name.split("/",4)[4]
125
+ #bytes_d = doc.encode()
126
+
127
+ #doc = Path(doc)
128
+ with open(doc.name, "rb") as file:
129
+ # read all file data
130
+ file_data = file.read()
131
+ dec_doc = fernet.decrypt(file_data)
132
+ og_name = doc.name
133
+ og_end = og_name.split(".",1)[1]
134
+ og_front=og_name.split(".",1)[0]
135
+
136
+ dec_file = doc.name.strip(".ocrpt")
137
+ #enc_file=f'{doc.name}.ocrpt'
138
+ with open(dec_file, "wb") as file:
139
+ file.write(dec_doc)
140
+
141
+ return dec_file
142
+
143
+ with gr.Blocks() as app:
144
+ with gr.Tab("Encrypt"):
145
+ pass_in=gr.Textbox(label="Set Password")
146
+ mes = gr.Textbox(label = "Message")
147
+ with gr.Row():
148
+ im = gr.Image(type="filepath")
149
+ doc=gr.File()
150
+ en_btn = gr.Button("Encrypt")
151
+ enc_out = gr.Textbox(label="Encrypted Bytes")
152
+ enc_doc_out=gr.File()
153
+ with gr.Tab("Decrypt"):
154
+ pass_out = gr.Textbox(label="Enter Password")
155
+ with gr.Tab("String"):
156
+ enc_in = gr.Textbox(label="Encrypted Bytes")
157
+ d_btn = gr.Button("Decrypt")
158
+ d_txt = gr.Textbox(label="Decrypted")
159
+ d_im =gr.Image(label="Decrytped Image")
160
+ with gr.Tab("File"):
161
+
162
+ dec_doc_in = gr.File()
163
+ dec_doc_btn = gr.Button("Decrypt")
164
+ dec_doc_out=gr.File()
165
+ dec_doc_btn.click(decode_doc,[pass_out,dec_doc_in],dec_doc_out)
166
+ en_btn.click(encrypt,[pass_in,mes,im,doc],[enc_out,enc_doc_out])
167
+ d_btn.click(decrypt,[pass_out,enc_in],[d_im,d_txt])
168
+ app.launch()
169
+