π ΠΠ°ΠΊ Π·Π°ΡΠΈΡΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» Π² Python: ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ
Π§ΡΠΎΠ±Ρ Π·Π°ΡΠΈΡΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» Π² Python, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ cryptography. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
from cryptography.fernet import Fernet
def encrypt_file(file_path, key):
with open(file_path, "rb") as file:
data = file.read()
fernet = Fernet(key)
encrypted_data = fernet.encrypt(data)
with open(file_path, "wb") as file:
file.write(encrypted_data)
key = Fernet.generate_key() # ΠΠ΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ ΠΊΠ»ΡΡ
file_path = "path_to_file" # ΠΡΡΡ ΠΊ Π²Π°ΡΠ΅ΠΌΡ ΡΠ°ΠΉΠ»Ρ
encrypt_file(file_path, key)
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ Π·Π°ΡΠΈΡΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» Π² Python
Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π·Π°ΡΠΈΡΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» Π² Python, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ.
1. Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ cryptography
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° cryptography ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠΎΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² Python. ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
pip install cryptography
ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Fernet Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
from cryptography.fernet import Fernet
# Π‘Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ
key = Fernet.generate_key()
# Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Fernet Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°
cipher_suite = Fernet(key)
# ΠΡΠΊΡΠΎΠ΅ΠΌ ΡΠ°ΠΉΠ» Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΈΡΡΡΠ΅ΠΌ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅
with open('file.txt', 'rb') as file:
plaintext = file.read()
encrypted_text = cipher_suite.encrypt(plaintext)
# Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²ΡΠΉ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» ΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΌ Π² Π½Π΅Π³ΠΎ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
with open('encrypted_file.txt', 'wb') as encrypted_file:
encrypted_file.write(encrypted_text)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌ Fernet Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΌΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ, Π·Π°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Fernet Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ°ΠΉΠ» Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ, ΡΠΈΡΡΡΠ΅ΠΌ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ».
2. Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ pyAesCrypt
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π°ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ pyAesCrypt. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
pip install pyAesCrypt
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΉ Π°ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠ΅ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°:
import pyAesCrypt
# Π Π°Π·ΠΌΠ΅Ρ Π±ΡΡΠ΅ΡΠ° Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ-Π·Π°ΠΏΠΈΡΠΈ Π΄Π°Π½Π½ΡΡ
ΡΠ°ΠΉΠ»Π°
buffer_size = 64 * 1024
# ΠΡΡΡ ΠΊ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ
input_file = "file.txt"
# ΠΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ, Π² ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
output_file = "encrypted_file.txt.aes"
# ΠΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ
password = "my_password"
# ΠΠ°ΡΠΈΡΡΠΎΠ²ΡΠ²Π°Π΅ΠΌ ΡΠ°ΠΉΠ»
pyAesCrypt.encryptFile(input_file, output_file, password, buffer_size)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ encryptFile ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ pyAesCrypt Π΄Π»Ρ Π°ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°. ΠΡ ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΏΡΡΡ ΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ, ΠΏΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ, Π² ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΏΠ°ΡΠΎΠ»Ρ Π΄Π»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ Π±ΡΡΠ΅ΡΠ° Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ-Π·Π°ΠΏΠΈΡΠΈ Π΄Π°Π½Π½ΡΡ ΡΠ°ΠΉΠ»Π°.
3. Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ hashlib
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΡΠ°ΠΉΠ»Π°, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ hashlib Π² Python. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import hashlib
# ΠΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Ρ
file_path = "file.txt"
# Π§ΠΈΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠ» ΠΈ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ Π΅Π³ΠΎ Ρ
Π΅Ρ
with open(file_path, 'rb') as file:
data = file.read()
hash_object = hashlib.sha256(data)
file_hash = hash_object.hexdigest()
print("Π₯Π΅Ρ ΡΠ°ΠΉΠ»Π°:", file_hash)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ SHA256 Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Ρ Π΅ΡΠ° ΡΠ°ΠΉΠ»Π°. ΠΡ ΠΎΡΠΊΡΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ Π² Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, ΠΏΡΠΎΡΠΈΡΠ°Π»ΠΈ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅, Π²ΡΡΠΈΡΠ»ΠΈΠ»ΠΈ Ρ Π΅Ρ ΠΈ Π²ΡΠ²Π΅Π»ΠΈ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ Π·Π°ΡΠΈΡΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» Π² Python. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ cryptography, pyAesCrypt ΠΈ hashlib Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΈ Π°ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Ρ Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΡΠ°ΠΉΠ»Π°. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π°ΡΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡΠ΅ ΠΈΠ·ΡΡΠ°ΡΡ ΠΈΡΠΊΡΡΡΡΠ²ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π² Python!