-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcryptLibrary.py
More file actions
86 lines (62 loc) · 2.01 KB
/
cryptLibrary.py
File metadata and controls
86 lines (62 loc) · 2.01 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
import os
import sys
import base64
from colorama import init
from colorama import Fore, Back, Style
from cryptography.fernet import Fernet
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
# copyright, Sandcroft Software, 2021.
# Library features
# encrypt filetypes (exe,pdf,jpg,txt,svg)
# program flow
# generate a new token
# make an encryption key
# encrypt data
init(autoreset=True)
myFile = "./fsm.txt"
def generate_new_token():
passcode = Fernet.generate_key()
return passcode
def print_red(message):
print(f"{Fore.RED}{message}")
def print_success(message):
print(f"{Back.GREEN}{message}")
def make_new_encryption_key(passcode):
salt = os.urandom(16)
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=salt,
iterations=320000,
backend=default_backend()
)
key = base64.urlsafe_b64encode(kdf.derive(passcode))
return Fernet(key)
def encrypt_data(key_frame,message):
encrypted_token = key_frame.encrypt(bytes(message, encoding='utf-8'))
return encrypted_token
def decrypt_data(key_frame,message):
decrypted_token = key_frame.decrypt(message)
return decrypted_token
def file_content_to_encrypt(myFile):
with open(myFile,'r') as new_content:
file_content = new_content.read().replace('\r', '')
return file_content
def show_decrypted_file_content(newKey,myFile):
if newKey:
dec_data = decrypt_data(newKey, myFile)
return dec_data
def show_encrypted_file_content(newKey,myFile):
if newKey:
enc_data = encrypt_data(newKey, myFile)
return enc_data
def encrypt_file_content(newKey, myFile):
file_content = file_content_to_encrypt(myFile)
enc_data = encrypt_data(newKey, file_content)
return enc_data
def decrypt_file_content(newKey, myFile):
decrypt_me = file_content_to_encrypt(myFile)
dec_data = decrypt_data(newKey, decrypt_me)
return dec_data