وقتی صحبت از توسعه نرمافزار میشه، یکی از مهمترین موضوعات، امنیت هست. مخصوصاً در پایتون که برای پروژههای مختلفی مثل اپلیکیشنهای وب، اسکریپتهای خودکارسازی، و حتی بلاکچین استفاده میشه. توی این آموزش میخوایم با هم سه بخش مهم از امنیت در پایتون رو بررسی کنیم: هشینگ و رمزنگاری، مدیریت کلیدهای رمزنگاری، و ایمنسازی کلی برنامههای پایتون.
hashlibهشینگ فرآیندی هست که دادهها رو به یک رشتهی ثابت و غیرقابل برگشت تبدیل میکنه. توی پایتون، کتابخونه hashlib برای این کار عالیه.
مثال ساده:
import hashlibpassword = "my_secure_password"hashed = hashlib.sha256(password.encode()).hexdigest()print(hashed)
اینجا، رمز عبور ما با الگوریتم SHA-256 هش شده. توجه کن که هشینگ یکطرفه است، یعنی نمیشه برش گردوند به رمز اصلی.
bcryptبرای ذخیره امن پسوردها، بهتره از bcrypt استفاده کنیم، چون سالت هم به هش اضافه میکنه و امنیت رو چند برابر میکنه.
import bcryptpassword = b"my_secure_password"# ساخت هش به همراه salthashed = bcrypt.hashpw(password, bcrypt.gensalt())print(hashed)# بررسی صحت رمز عبورif bcrypt.checkpw(password, hashed):print("Password is correct!")else:print("Invalid password!")
زمانی که بخوای اطلاعات حساس رو رمزنگاری و بعداً رمزگشایی کنی، میتونی از cryptography استفاده کنی. این کتابخونه حرفهای و امنه.
from cryptography.fernet import Fernet# تولید کلید جدیدkey = Fernet.generate_key()cipher = Fernet(key)# رمزنگاریmessage = b"Hello, secure world!"token = cipher.encrypt(message)print("Encrypted:", token)# رمزگشاییdecrypted = cipher.decrypt(token)print("Decrypted:", decrypted.decode())
نکته: کلید تولید شده رو باید در جای امنی ذخیره کنی، مثل محیطهای ایمن یا فایلهای کانفیگ رمزنگاری شده.
حالا که با مبانی رمزنگاری آشنا شدیم، چند نکته برای ایمنسازی کلی برنامههای پایتون: