πΠΠ°ΠΊ ΡΠΈΡΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π½Π° Python: Π»Π΅Π³ΠΊΠΈΠΉ ΡΠΏΠΎΡΠΎΠ±
cryptography
Π΄Π»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° Python. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
from cryptography.fernet import Fernet
def encrypt_code(code, key):
f = Fernet(key)
encrypted_code = f.encrypt(code.encode())
return encrypted_code
def decrypt_code(encrypted_code, key):
f = Fernet(key)
decrypted_code = f.decrypt(encrypted_code).decode()
return decrypted_code
# Generate a random encryption key
key = Fernet.generate_key()
# Encrypt code
code = 'print("Hello, world!")'
encrypted_code = encrypt_code(code, key)
# Decrypt code
decrypted_code = decrypt_code(encrypted_code, key)
print("Encrypted code:", encrypted_code)
print("Decrypted code:", decrypted_code)
Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΌΠΎΠ΄ΡΠ»Ρ cryptography
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ pip install cryptography
.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΡΠΈΡΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π½Π° Python
Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π° Python ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π·Π°ΡΠΈΡΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ ΠΎΡ Π½Π΅ΡΠ°Π½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΈΠ»ΠΈ ΡΡΠ΅Π½ΠΈΡ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° Python ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠΌ Π²Π°ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π°.
1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ base64
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡΠΎΡΡΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π·Π°ΡΠΈΡΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π½Π° Python ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ base64. Base64 ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΎΠΊ Π² ΡΠΎΡΠΌΠ°Ρ Base64.
import base64
# ΠΠ°ΠΊΠΎΠ΄ΠΈΡΡΠ΅ΠΌ ΡΡΡΠΎΠΊΡ Π² Base64
encoded_code = base64.b64encode('print("Hello, World!")'.encode('utf-8'))
print(encoded_code)
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°Ρ ΠΊΠΎΠ΄ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ Base64 ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ ΠΈΠ»ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½.
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ²
ΠΡΠ»ΠΈ Π²Π°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ AES (Advanced Encryption Standard) ΠΈΠ»ΠΈ RSA (Rivest-Shamir-Adleman).
ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π² Python Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΡΠΎΡΠΎΠ½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, cryptography. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ AES Π΄Π»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°:
from cryptography.fernet import Fernet
# Π‘Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ
key = Fernet.generate_key()
# Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° Fernet Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡΡΠ°
cipher = Fernet(key)
# ΠΠ°ΡΠΈΡΡΡΠ΅ΠΌ ΠΊΠΎΠ΄
encrypted_code = cipher.encrypt(b'print("Hello, World!")')
print(encrypted_code)
Π’Π΅ΠΏΠ΅ΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ AES. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π΄Π»Ρ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΈ ΠΊΠΎΠ΄Π° Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡ ΠΆΠ΅ ΠΊΠ»ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π΄Π»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ.
3. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°
ΠΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π·Π°ΡΠΈΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Python ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΡ. ΠΠ±ΡΡΡΠΊΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΅Π³ΠΎ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΈΠΌΠ΅Π½ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ ΡΡΡΠ΄Π½ΡΠΌ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°.
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π° Python, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ PyArmor, Pyminifier ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Pyminifier Π΄Π»Ρ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°:
import pyminifier
# ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΈΠ· ΡΠ°ΠΉΠ»Π°
def obfuscate_code(file_name):
with open(file_name, 'r') as file:
code = file.read()
obfuscated_code = pyminifier.remove_comments(pyminifier.obfuscate(code))
return obfuscated_code
# ΠΠ±ΡΡΡΡΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠ΄ ΠΈΠ· ΡΠ°ΠΉΠ»Π° script.py
obfuscated_code = obfuscate_code('script.py')
print(obfuscated_code)
Π’Π΅ΠΏΠ΅ΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ ΡΡΠ°Π» ΠΌΠ΅Π½Π΅Π΅ ΡΠΈΡΠ°Π΅ΠΌΡΠΌ ΠΈ ΡΡΡΠ΄Π½ΡΠΌ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π°.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° Python. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ base64 Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ers ers. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π²Π°ΡΠΈ requires in. ΠΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ code Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠΉ Π·Π°ΡΠΈΡΠΎΠΉ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°Π½ΠΎ.