نحوه رمزگذاری و رمزگشایی داده ها در پایتون با استفاده از کتابخانه رمزنگاری

در این مقاله آموزشی نحوه رمزگذاری و رمزگشایی داده ها ، به عنوان مثال رشته ای از متن با استفاده از کتابخانه رمزنگاری در پایتون.

رمزگذاری فرآیند رمزگذاری اطلاعات به گونه ای است که فقط اشخاص مجاز می توانند به آنها دسترسی داشته باشند. این به ما امکان می دهد از داده هایی که نمی خواهیم فقط کسی ببیند یا به آنها دسترسی پیدا کند ، ایمن محافظت کنیم.

مربوط:


در این مثال ، ما از رمزگذاری متقارن استفاده خواهیم کرد ، به این معنی که همان کلیدی که برای رمزگذاری داده استفاده کردیم ، برای رمزگشایی نیز قابل استفاده است.

کتابخانه رمزنگاری که ما در اینجا استفاده می کنیم در بالای الگوریتم 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()

رمزگذاری یک پیام

اکنون ، ما آماده رمزگذاری یک پیام هستیم. این یک فرآیند سه مرحله ای است:

  • 1 - رمزگذاری پیام
  • 2 - کلاس Fernet را مقداردهی اولیه کنید
  • 3 - پیام رمزگذاری شده را به 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