ساخت اسکریپت رمزگذاری فایلها با پایتون: اتوماسیون و اسکریپتنویسی
رمزگذاری فایلها یکی از مهمترین جنبههای امنیت دادهها است. با افزایش تهدیدات سایبری، محافظت از اطلاعات حساس از اهمیت ویژهای برخوردار است. در این مقاله، به بررسی نحوه ساخت یک اسکریپت پایتون برای رمزگذاری و رمزگشایی فایلها میپردازیم. این اسکریپت به شما امکان میدهد تا به راحتی فایلهای خود را رمزگذاری کرده و از دسترسی غیرمجاز به آنها جلوگیری کنید. این آموزش در دسته بندی ‘اتوماسیون و اسکریپتنویسی’ قرار میگیرد و برای افراد با دانش پایه پایتون مناسب است.
مقدمه
رمزگذاری فرآیندی است که در آن دادهها به فرمتی غیرقابل خواندن تبدیل میشوند. برای دسترسی به دادههای رمزگذاری شده، نیاز به یک کلید رمزگشایی است. الگوریتمهای رمزگذاری مختلفی وجود دارند که هر کدام دارای ویژگیها و سطح امنیتی متفاوتی هستند. در این آموزش، از کتابخانه `cryptography` پایتون استفاده خواهیم کرد که یک کتابخانه قدرتمند و امن برای انجام عملیات رمزگذاری است.
پیشنیازها
قبل از شروع، اطمینان حاصل کنید که پایتون و کتابخانه `cryptography` روی سیستم شما نصب شدهاند. برای نصب کتابخانه `cryptography` میتوانید از دستور زیر در ترمینال یا خط فرمان استفاده کنید:
pip install cryptography
طراحی اسکریپت
اسکریپت ما شامل دو بخش اصلی خواهد بود: رمزگذاری و رمزگشایی. در بخش رمزگذاری، فایل مورد نظر را خوانده و با استفاده از یک کلید، آن را رمزگذاری میکنیم. در بخش رمزگشایی، فایل رمزگذاری شده را خوانده و با استفاده از همان کلید، آن را رمزگشایی میکنیم.
رمزگذاری فایل
برای رمزگذاری فایل، مراحل زیر را دنبال میکنیم:
- ایجاد یک کلید رمزگذاری.
- خواندن فایل مورد نظر.
- رمزگذاری دادههای فایل با استفاده از کلید.
- نوشتن دادههای رمزگذاری شده در یک فایل جدید.
رمزگشایی فایل
برای رمزگشایی فایل، مراحل زیر را دنبال میکنیم:
- ایجاد یک کلید رمزگشایی (که باید با کلید رمزگذاری یکسان باشد).
- خواندن فایل رمزگذاری شده.
- رمزگشایی دادههای فایل با استفاده از کلید.
- نوشتن دادههای رمزگشایی شده در یک فایل جدید.
کد پایتون
در اینجا کد پایتون برای رمزگذاری و رمزگشایی فایلها آورده شده است:
from cryptography.fernet import Fernet
def generate_key():
"""ایجاد یک کلید رمزگذاری جدید."""
key = Fernet.generate_key()
with open("secret.key", "wb") as key_file:
key_file.write(key)
def load_key():
"""بارگیری کلید رمزگذاری از فایل."""
return open("secret.key", "rb").read()
def encrypt_file(filename, key):
"""رمزگذاری یک فایل."""
f = Fernet(key)
with open(filename, "rb") as file:
file_data = file.read()
encrypted_data = f.encrypt(file_data)
with open(filename + ".enc", "wb") as file:
file.write(encrypted_data)
def decrypt_file(filename, key):
"""رمزگشایی یک فایل."""
f = Fernet(key)
with open(filename, "rb") as file:
encrypted_data = file.read()
decrypted_data = f.decrypt(encrypted_data)
with open(filename[:-4], "wb") as file:
file.write(decrypted_data)
# مثال استفاده
if __name__ == "__main__":
# اگر کلید وجود ندارد، یک کلید جدید ایجاد کنید.
try:
load_key()
except FileNotFoundError:
generate_key()
key = load_key()
# رمزگذاری فایل
encrypt_file("my_secret_file.txt", key)
print("فایل رمزگذاری شد.")
# رمزگشایی فایل
decrypt_file("my_secret_file.txt.enc", key)
print("فایل رمزگشایی شد.")
توضیح کد
در این کد، از الگوریتم AES (Advanced Encryption Standard) استفاده شده است که یک الگوریتم رمزگذاری متقارن است. به این معنی که برای رمزگذاری و رمزگشایی از یک کلید یکسان استفاده میشود. کتابخانه `cryptography` پیادهسازی امن و کارآمدی از این الگوریتم ارائه میدهد.
- تابع `generate_key()` یک کلید رمزگذاری جدید ایجاد میکند و آن را در فایل `secret.key` ذخیره میکند.
- تابع `load_key()` کلید رمزگذاری را از فایل `secret.key` بارگیری میکند.
- تابع `encrypt_file()` یک فایل را رمزگذاری میکند و نتیجه را در یک فایل جدید با پسوند `.enc` ذخیره میکند.
- تابع `decrypt_file()` یک فایل رمزگذاری شده را رمزگشایی میکند و نتیجه را در یک فایل جدید با حذف پسوند `.enc` ذخیره میکند.
نکات امنیتی
در هنگام استفاده از این اسکریپت، نکات امنیتی زیر را در نظر داشته باشید:
- کلید رمزگذاری را به صورت امن نگهداری کنید. کلید رمزگذاری نباید در دسترس افراد غیرمجاز قرار گیرد.
- از کلیدهای قوی استفاده کنید. کلیدهای قوی باید طولانی و تصادفی باشند.
- از الگوریتمهای رمزگذاری قوی استفاده کنید. الگوریتمهای رمزگذاری قوی مانند AES امنیت بیشتری را ارائه میدهند.
- بهروزرسانی کتابخانهها. کتابخانههای رمزنگاری را بهطور منظم بهروزرسانی کنید تا از آخرین وصلههای امنیتی بهرهمند شوید.
بهبود اسکریپت
اسکریپت ارائه شده را میتوان به روشهای مختلفی بهبود بخشید:
- اضافه کردن پشتیبانی از خط فرمان. با اضافه کردن پشتیبانی از خط فرمان، میتوانید اسکریپت را به راحتی از ترمینال یا خط فرمان اجرا کنید.
- اضافه کردن قابلیت رمزگذاری و رمزگشایی چندین فایل. میتوانید اسکریپت را طوری تغییر دهید که بتواند چندین فایل را به صورت همزمان رمزگذاری یا رمزگشایی کند.
- اضافه کردن قابلیت فشردهسازی فایلها. قبل از رمزگذاری، میتوانید فایلها را فشرده کنید تا حجم آنها کاهش یابد.
- استفاده از رمزگذاری نامتقارن. در رمزگذاری نامتقارن، از دو کلید مختلف برای رمزگذاری و رمزگشایی استفاده میشود. این روش امنیت بیشتری را ارائه میدهد، اما پیچیدهتر است.
نتیجهگیری
در این مقاله، نحوه ساخت یک اسکریپت پایتون برای رمزگذاری و رمزگشایی فایلها را بررسی کردیم. این اسکریپت میتواند به شما کمک کند تا از اطلاعات حساس خود در برابر دسترسی غیرمجاز محافظت کنید. با رعایت نکات امنیتی و بهبود اسکریپت، میتوانید امنیت دادههای خود را به طور قابل توجهی افزایش دهید. این آموزش یک نقطه شروع برای یادگیری بیشتر در زمینه اتوماسیون و اسکریپتنویسی با پایتون و امنیت دادهها است.

بدون دیدگاه