در این مقاله آموزشی نحوه رمزگذاری و رمزگشایی داده ها ، به عنوان مثال رشته ای از متن با استفاده از کتابخانه رمزنگاری در پایتون.
رمزگذاری فرآیند رمزگذاری اطلاعات به گونه ای است که فقط اشخاص مجاز می توانند به آنها دسترسی داشته باشند. این به ما امکان می دهد از داده هایی که نمی خواهیم فقط کسی ببیند یا به آنها دسترسی پیدا کند ، ایمن محافظت کنیم.
مربوط:
در این مثال ، ما از رمزگذاری متقارن استفاده خواهیم کرد ، به این معنی که همان کلیدی که برای رمزگذاری داده استفاده کردیم ، برای رمزگشایی نیز قابل استفاده است.
کتابخانه رمزنگاری که ما در اینجا استفاده می کنیم در بالای الگوریتم AES ساخته شده است.
ابتدا باید کتابخانه رمزنگاری را نصب کنیم:
pip3 install cryptography
از کتابخانه رمزنگاری ، ما نیاز به وارد کردن Fernet
داریم و شروع به تولید یک کلید کنید - این کلید برای رمزگذاری / رمزگشایی متقارن مورد نیاز است.
برای تولید یک کلید ، generate_key()
را فراخوانی می کنیم روش:
from cryptography.fernet import Fernet def generate_key():
'''
Generates a key and save it into a file
'''
key = Fernet.generate_key()
with open('secret.key', 'wb') as key_file:
key_file.write(key)
برای تولید کلید فقط یکبار باید روش بالا را اجرا کنیم.
پس از تولید یک کلید ، برای رمزگذاری داده ها باید کلید را در روش خود بارگیری کنیم:
def load_key():
'''
Loads the key named `secret.key` from the current directory.
'''
return open('secret.key', 'rb').read()
اکنون ، ما آماده رمزگذاری یک پیام هستیم. این یک فرآیند سه مرحله ای است:
encrypt()
منتقل کنید روشرمزگذاری پیام:
message = 'message I want to encrypt'.encode()
کلاس Fernet را مقداردهی اولیه کنید:
f = Fernet(key)
رمزگذاری پیام:
encrypted_message = f.encrypt(message)
در زیر یک مثال کامل رمزگذاری پیام در پایتون آورده شده است:
from cryptography.fernet import Fernet def generate_key():
'''
Generates a key and save it into a file
'''
key = Fernet.generate_key()
with open('secret.key', 'wb') as key_file:
key_file.write(key) def load_key():
'''
Load the previously generated key
'''
return open('secret.key', 'rb').read() def encrypt_message(message):
'''
Encrypts a message
'''
key = load_key()
encoded_message = message.encode()
f = Fernet(key)
encrypted_message = f.encrypt(encoded_message)
print(encrypted_message) if __name__ == '__main__':
encrypt_message('encrypt this message')
خروجی:
b'gAAAAABesCUIAcM8M-_Ik_-I1-JD0AzLZU8A8-AJITYCp9Mc33JaHMnYmRedtwC8LLcYk9zpTqYSaDaqFUgfz-tcHZ2TQjAgKKnIWJ2ae9GDoea6tw8XeJ4='
برای رمزگشایی پیام ، ما فقط با decrypt()
تماس می گیریم روش از Fernet
کتابخانه به یاد داشته باشید ، ما همچنین باید کلید را بارگیری کنیم ، زیرا کلید برای رمزگشایی پیام مورد نیاز است.
from cryptography.fernet import Fernet def load_key():
'''
Load the previously generated key
'''
return open('secret.key', 'rb').read() def decrypt_message(encrypted_message):
'''
Decrypts an encrypted message
'''
key = load_key()
f = Fernet(key)
decrypted_message = f.decrypt(encrypted_message)
print(decrypted_message.decode()) if __name__ == '__main__':
decrypt_message(b'gAAAAABesCUIAcM8M-_Ik_-I1-JD0AzLZU8A8-AJITYCp9Mc33JaHMnYmRedtwC8LLcYk9zpTqYSaDaqFUgfz-tcHZ2TQjAgKKnIWJ2ae9GDoea6tw8XeJ4=')
خروجی:
encrypt this message