در دنیای امروزی که ارتباطات برای اکثر افراد بسیار مهم است، امنیت اطلاعات از اهمیت ویژهای برخوردار است. در این زمینه، رمزنگاری نقش بسیار مهمی ایفا میکند. Cryptography یکی از کتابخانههای قدرتمند پایتون برای انجام عملیات رمزنگاری و رمزگشایی در زبان برنامهنویسی پایتون است. در این آموزش، با قدم به قدم یاد خواهیم گرفت که چگونه از کتابخانه Cryptography استفاده کنیم و با مثالهای کاربردی عملی، به شیوهای حرفهای از رمزنگاری استفاده کنیم.
1. نصب کتابخانه Cryptography
قبل از هر چیز، ابتدا باید کتابخانه Cryptography را در محیط پروژه خود نصب کنیم. برای نصب این کتابخانه، میتوانید از دستور زیر استفاده کنید:
pip install cryptography
2. مقدمهای درباره رمزنگاری
رمزنگاری فرآیند تبدیل یک متن معمولی به یک متن رمزنگاری شده است که فقط افراد مجاز میتوانند آن را مشاهده کنند. این فرآیند شامل استفاده از الگوریتمها و کلیدها برای تغییر ساختار متن میشود. در ادامه، با مراحل استفاده از کتابخانه Cryptography و مثالهای کاربردی آن آشنا خواهیم شد.
3. رمزنگاری ساده با استفاده از کتابخانه Cryptography
یکی از روشهای ساده رمزنگاری، استفاده از کلید عمومی و خصوصی است. فردی که کلید عمومی دارد میتواند متن رمزنگاری شده را بررسی کند، اما تنها فردی که کلید خصوصی دارد میتواند آن را رمزگشایی کند. به صورت زیر میتوانید رمزنگاری و رمزگشایی ساده را با استفاده از کتابخانه Cryptography انجام دهید:
from cryptography.fernet import Fernet
key = Fernet.generate_key()
cipher_suite = Fernet(key)
plaintext = b"Hello, World!"
cipher_text = cipher_suite.encrypt(plaintext)
decrypted_text = cipher_suite.decrypt(cipher_text)
print(decrypted_text) # خروجی: Hello, World!
4. رمزنگاری و رمزگشایی فایل
علاوه بر رمزنگاری متن، میتوان از کتابخانه Cryptography برای رمزنگاری و رمزگشایی فایلها نیز استفاده کرد. با استفاده از توابع مربوطه در کتابخانه Cryptography، میتوانید فایلهای خود را رمزنگاری کنید و بازیابی کنید. به صورت زیر میتوانید این عملیات را انجام دهید:
from cryptography.fernet import Fernet
def encrypt_file(file_path, key):
with open(file_path, 'rb') as file:
file_data = file.read()
cipher_suite = Fernet(key)
encrypted_data = cipher_suite.encrypt(file_data)
with open(file_path, 'wb') as file:
file.write(encrypted_data)
def decrypt_file(file_path, key):
with open(file_path, 'rb') as file:
encrypted_data = file.read()
cipher_suite = Fernet(key)
decrypted_data = cipher_suite.decrypt(encrypted_data)
with open(file_path, 'wb') as file:
file.write(decrypted_data)
file_path = 'example.txt'
key = Fernet.generate_key()
encrypt_file(file_path, key)
decrypt_file(file_path, key)
5. تولید امضای دیجیتال
امضای دیجیتال نیز یکی از کاربردهای مهم رمزنگاری است. با استفاده از کتابخانه Cryptography، میتوانید امضای دیجیتال بسازید و اعتبار آن را بررسی کنید. به صورت زیر میتوانید این کار را انجام دهید:
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives.asymmetric import rsa
def generate_key_pair():
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048
)
public_key = private_key.public_key()
return private_key, public_key
def sign_message(message, private_key):
signature = private_key.sign(
message,
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.SHA256()
)
return signature
def verify_signature(message, signature, public_key):
try:
public_key.verify(
signature,
message,
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.SHA256()
)
return True
except:
return False
private_key, public_key = generate_key_pair()
message = b"Hello, World!"
signature = sign_message(message, private_key)
valid = verify_signature(message, signature, public_key)
print(valid) # خروجی: True
6. نکات مهم در استفاده از کتابخانه کریپتوگرافی در پایتون
در استفاده از رمزنگاری و رمزگشایی، باید به نکات امنیتی زیر توجه کنید تا اطلاعات شما در امان باشد:
- استفاده از الگوریتمهای قوی و امن برای رمزنگاری و رمزگشایی.
- نگهداری کلیدها و رشتههای مهم در محیطی امن(منطق برنامه شما با ید به نحوی باشد که کلید خصوصی بصورت اختصاصی برای موارد کنترل شده ای قابل دسترسی باشد)
- داشتن درک کامل از کدی که استفاده می کنید
7. راهنمای مطالعه و منابع مفید
برای ادامه مطالعه
ه و یادگیری بیشتر درباره کتابخانه Cryptography و رمزنگاری، میتوانید از منابع زیر استفاده کنید:
- مستندات رسمی کتابخانه Cryptography: https://cryptography.io/
- کتاب “Python Cryptography” نوشته “Samuel Bowne”: https://www.packtpub.com/product/python-cryptography-third-edition/9781838988039
- سایت OWASP برای امنیت برنامههای وب: https://owasp.org/
این یک مقاله آموزشی کامل درباره کتابخانه Cryptography با مثالهای کاربردی در زبان پایتون بود. امیدوارم که این آموزش برای شما مفید بوده باشد و به شما در فهم و استفاده از رمزنگاری کمک کند. با استفاده از کتابخانه Cryptography، میتوانید امنیت اطلاعات خود را تقویت کرده و از امکانات رمزنگاری در برنامههای خود بهرهبرداری کنید.