- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEncryptionFile.py
More file actions
Latest commit
39 lines (31 loc) · 1.57 KB
/
Copy pathEncryptionFile.py
File metadata and controls
39 lines (31 loc) · 1.57 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
fromcryptography.hazmat.backendsimportdefault_backend
fromcryptography.hazmat.primitives.ciphersimportCipher, algorithms, modes
fromcryptography.hazmat.primitivesimportpadding
fromosimporturandom
defencrypt_file(input_file_path, output_file_path, key):
# Генерация случайного вектора инициализации (IV)
iv=urandom(16)
# Создание шифра AES с режимом CFB
cipher=Cipher(algorithms.AES(key), modes.CFB(iv), backend=default_backend())
encryptor=cipher.encryptor()
# Чтение исходного файла и его шифрование
withopen(input_file_path, 'rb') asf:
plaintext=f.read()
# Дополнение данных до полного блока
padder=padding.PKCS7(128).padder()
padded_plaintext=padder.update(plaintext) +padder.finalize()
ciphertext=encryptor.update(padded_plaintext) +encryptor.finalize()
# Запись зашифрованных данных в выходной файл
withopen(output_file_path, 'wb') asf:
f.write(iv+ciphertext)
# Заданные пути к файлам
input_file='C:/Users/Nikolay/Desktop/Текст.doc'
output_file='C:/Users/Nikolay/Desktop/encrypted.bin'
key_file_path='C:/Users/Nikolay/Desktop/key.txt'
# Генерация ключа
key=urandom(32)
# Сохранение ключа
withopen(key_file_path, "wb") askey_file:
key_file.write(key)
# Шифрование файла
encrypt_file(input_file, output_file, key)