رمزنگاری و قفل‌گذاری فایل‌ها با Python و کتابخانه Cryptography

پروژه‌های امنیتی پایتون

آموزش ۲ دقیقه مطالعه
فهرست مطالب
این مطلب از سایت tool.hamidvalad.ir گرفته شده است

معرفی

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

هدف آموزش

در این پروژه یاد می‌گیریم چگونه با پایتون اسکریپتی بنویسیم که بتواند فایل‌های متنی را رمزنگاری و رمزگشایی کند. این برنامه از کلید اختصاصی برای قفل و باز کردن داده‌ها استفاده می‌کند تا امنیت اطلاعات تضمین شود.

پیش‌نیازها

برای اجرای این پروژه، باید با مفاهیم اولیه پایتون و فایل‌ها (توابع open، read، write) آشنا باشید. همچنین بهتر است مفهوم رمزنگاری متقارن و نامتقارن را بدانید. در این پروژه از رمزنگاری متقارن استفاده می‌کنیم، چون ساده‌تر و سریع‌تر است.

نصب و آماده‌سازی کتابخانه‌ها

برای شروع، باید کتابخانه cryptography را نصب کنیم:

pip install cryptography

سپس برای اطمینان از نصب موفق، دستور زیر را در پایتون اجرا کنید:

import cryptography
print("کتابخانه با موفقیت نصب شد!")

آشنایی با Fernet

Fernet یکی از ماژول‌های کتابخانه cryptography است که رمزنگاری امن و ساده‌ای را فراهم می‌کند. این ماژول از الگوریتم AES با طول کلید ۱۲۸ بیت استفاده می‌کند و صحت داده را با HMAC تضمین می‌کند. در این روش:

  • همان کلید برای رمزنگاری و رمزگشایی استفاده می‌شود.
  • بدون کلید، بازگرداندن داده‌ها غیرممکن است.
  • فایل key.key باید در جای امن نگهداری شود.

ساختار فایل‌های پروژه

پروژه شامل فایل‌های زیر است:

  • encrypt_file.py — اسکریپت رمزنگاری فایل‌ها
  • decrypt_file.py — اسکریپت رمزگشایی فایل‌ها
  • data.txt — فایل متنی ورودی
  • key.key — فایل حاوی کلید رمزنگاری

نکات امنیتی قبل از کدنویسی

  • اگر فایل key.key حذف شود، هیچ راهی برای بازیابی داده‌ها وجود ندارد.
  • کلید را کنار فایل اصلی قرار ندهید.
  • از کلید پشتیبان تهیه کنید.
  • دسترسی فایل‌ها را محدود کنید.

کدنویسی پروژه

تولید کلید رمزنگاری

from cryptography.fernet import Fernet

key = Fernet.generate_key()
with open("key.key", "wb") as key_file:
    key_file.write(key)

رمزنگاری فایل

from cryptography.fernet import Fernet

with open("key.key", "rb") as key_file:
    key = key_file.read()

fernet = Fernet(key)
with open("data.txt", "rb") as file:
    original = file.read()

encrypted = fernet.encrypt(original)
with open("data.txt", "wb") as encrypted_file:
    encrypted_file.write(encrypted)

رمزگشایی فایل

from cryptography.fernet import Fernet

with open("key.key", "rb") as key_file:
    key = key_file.read()

fernet = Fernet(key)
with open("data.txt", "rb") as enc_file:
    encrypted = enc_file.read()

decrypted = fernet.decrypt(encrypted)
with open("data.txt", "wb") as dec_file:
    dec_file.write(decrypted)

نکات امنیتی تکمیلی

  • فایل قفل‌شده را می‌توان باز کرد اما محتوا ناخوانا خواهد بود.
  • از پسوند .enc یا .locked برای فایل‌های رمزنگاری‌شده استفاده کنید.
  • کلید و فایل رمزنگاری‌شده را در یک مسیر نگه ندارید.

نتیجه‌گیری

در این آموزش یاد گرفتیم چطور با چند خط کد پایتون، فایل‌ها را رمزنگاری کنیم. با استفاده از کتابخانه cryptography می‌توانید امنیت اطلاعات شخصی و کاری خود را تا حد زیادی افزایش دهید. این روش در پروژه‌های بزرگ‌تر مانند سیستم‌های لاگین و اپلیکیشن‌های مالی نیز کاربرد دارد.

منابع و مستندات