Files

63 lines
1.9 KiB
Python

import os
from cryptography.fernet import Fernet
import base64
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
import random
import string
def get_filename(filepath):
return os.path.basename(filepath)
def generate_random_letters(length=4):
return ''.join(random.choices(string.ascii_letters, k=length))
def generate_filename():
random_part = generate_random_letters()
return f"d3xp4-{random_part}.ink"
def encrypt_file(password, filepath):
# Генерация ключа на основе пароля
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=b'salt_',
iterations=100000,
)
key = base64.urlsafe_b64encode(kdf.derive(password.encode()))
f = Fernet(key)
# Чтение и шифрование файла
with open(filepath, 'rb') as file:
file_data = file.read()
encrypted_data = f.encrypt(file_data)
# Генерируем новое имя файла
new_filename = generate_filename()
# Сохраняем в корневой папке проекта
encrypted_filepath = os.path.join(os.path.dirname(__file__), new_filename)
with open(encrypted_filepath, 'wb') as file:
file.write(encrypted_data)
return encrypted_filepath
def main():
password = "12qwaszx3edc44"
filepath = "/Users/user/Documents/GitHub/safe/porno.txt"
filename = get_filename(filepath)
print(f"Шифруется файл: {filename}")
try:
encrypted_file = encrypt_file(password, filepath)
print(f"Файл успешно зашифрован: {encrypted_file}")
except Exception as e:
print(f"Ошибка при шифровании: {str(e)}")
filename = generate_filename()
print(f"Сгенерированное имя файла: {filename}")
if __name__ == "__main__":
main()