π ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΊΠ²ΠΎΠ·Π½ΠΎΠ΅ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ python: ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΊΠ²ΠΎΠ·Π½ΠΎΠ³ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π² Python Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ AES ΠΈΠ»ΠΈ DES, Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Ρ Π°ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠΌ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ RSA.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
from Crypto.Cipher import AES
from Crypto.PublicKey import RSA
from Crypto.Random import get_random_bytes
def encrypt_data(data, public_key):
session_key = get_random_bytes(16)
cipher_rsa = RSA.import_key(public_key)
cipher_aes = AES.new(session_key, AES.MODE_ECB)
encrypted_session_key = cipher_rsa.encrypt(session_key)
encrypted_data = cipher_aes.encrypt(data)
return encrypted_session_key, encrypted_data
def decrypt_data(encrypted_session_key, encrypted_data, private_key):
cipher_rsa = RSA.import_key(private_key)
session_key = cipher_rsa.decrypt(encrypted_session_key)
cipher_aes = AES.new(session_key, AES.MODE_ECB)
decrypted_data = cipher_aes.decrypt(encrypted_data)
return decrypted_data
# ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ RSA
key_pair = RSA.generate(2048)
public_key = key_pair.publickey().export_key().decode()
private_key = key_pair.export_key().decode()
# Π¨ΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π΄Π΅ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
data = b"Π‘Π΅ΠΊΡΠ΅ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ"
encrypted_ses_key, encrypted_data = encrypt_data(data, public_key)
decrypted_data = decrypt_data(encrypted_ses_key, encrypted_data, private_key)
print(f"ΠΠ°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠ»ΡΡ ΡΠ΅ΡΡΠΈΠΈ: {encrypted_ses_key}")
print(f"ΠΠ°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅: {encrypted_data}")
print(f"Π Π°ΡΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅: {decrypted_data}")
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΊΠ²ΠΎΠ·Π½ΠΎΠ΅ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² Python?
Π‘ΠΊΠ²ΠΎΠ·Π½ΠΎΠ΅ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ - ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΡΠ΅ΠΌ Π·Π°ΡΠΈΡΡΠΎΠ²ΠΊΠΈ ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ. Π Python ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΊΠ²ΠΎΠ·Π½ΠΎΠ³ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ. Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ cryptography Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ²ΠΎΠ·Π½ΠΎΠ³ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ cryptography
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ cryptography, Π΅Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ. ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² pip Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
pip install cryptography
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΊΠ²ΠΎΠ·Π½ΠΎΠ³ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΊΠ²ΠΎΠ·Π½ΠΎΠ΅ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ Π·Π°ΡΠΈΡΡΠΎΠ²ΠΊΠΈ ΠΈ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.
from cryptography.fernet import Fernet
# ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠ»ΡΡΠ°
key = Fernet.generate_key()
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Fernet Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡΡΠ°
cipher_suite = Fernet(key)
# ΠΠ°ΡΠΈΡΡΠΎΠ²ΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
message = b"ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!"
cipher_text = cipher_suite.encrypt(message)
# Π Π°ΡΡΠΈΡΡΠΎΠ²ΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
plain_text = cipher_suite.decrypt(cipher_text)
print("ΠΡΡ
ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅:", message)
print("ΠΠ°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅:", cipher_text)
print("Π Π°ΡΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅:", plain_text)
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡ Fernet ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ cryptography Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠ»ΡΡΠ° ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ/ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ. Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ ΠΊΠ»ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° `Fernet.generate_key()`. ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ `cipher_suite` Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°. ΠΠ°Π»Π΅Π΅ ΠΌΡ Π·Π°ΡΠΈΡΡΠΎΠ²ΡΠ²Π°Π΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° `cipher_suite.encrypt()`, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° `cipher_suite.decrypt()`. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π‘ΠΊΠ²ΠΎΠ·Π½ΠΎΠ΅ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½ΠΎΠΉ ΠΌΠ΅ΡΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ . Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ cryptography Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΊΠ²ΠΎΠ·Π½ΠΎΠ³ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π² Python. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π² ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π²Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ .