bcrypt: تشفير كلمات المرور بأمان

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة

حماية كلمات مرور المستخدمين هي مهمة بالغة الأهمية في تطوير البرمجيات الحديثة. في عصر التهديدات السيبرانية المتزايدة، استخدام دوال التجزئة البسيطة أو القديمة مثل MD5 أو SHA-1 يشكل مخاطر أمنية كبيرة. هذه الخوارزميات سهلة الاختراق عبر هجمات جداول قوس قزح (rainbow tables) وسرعتها العالية في الحساب تجعلها عرضة لأساليب الاختراق الحديثة.

bcrypt هي دالة تجزئة تشفيرية تكيفية، صُممت خصيصًا لتخزين كلمات المرور بشكل آمن. تم إنشاؤها في عام 1999 بواسطة نيلس بروفوس وديفيد مازير، وتعتمد هذه الخوارزمية على تشفير Blowfish وتتضمن نظام ملح (salt) مدمج، مما يجعلها شديدة المقاومة لأنواع مختلفة من الهجمات.

في نظام Python البيئي، تتوفر bcrypt من خلال مكتبة تحمل نفس الاسم، وهي غلاف Python للتنفيذ الأصلي من OpenBSD. تُستخدم هذه المكتبة من قبل ملايين المطورين حول العالم وتُعتبر المعيار الذهبي لتجزئة كلمات المرور في تطبيقات Python.

ما هي مكتبة bcrypt

مكتبة bcrypt لـ Python هي أداة موثوقة ومثبتة عبر الزمن لتجزئة كلمات المرور تشفيريًا. وهي عبارة عن غلاف Python للتنفيذ الأصلي بلغة C لمكتبة bcrypt، مما يضمن أداءً عاليًا وموثوقية.

الميزات الرئيسية لـ bcrypt

التكيفية: القوة الأساسية لـ bcrypt تكمن في طبيعتها التكيفية. معامل "cost factor" يسمح بزيادة تعقيد العمليات الحسابية مع تزايد قوة الحوسبة، مما يوفر حماية طويلة الأمد.

الملح المدمج: كل تجزئة تتضمن تلقائيًا ملحًا فريدًا، مما يستبعد إمكانية استخدام جداول قوس قزح لاختراق كلمات المرور.

القوة التشفيرية: استخدام خوارزمية Blowfish مع جولات تشفير متعددة يوفر مستوى عالٍ من الحماية التشفيرية.

التوحيد القياسي: تتبع bcrypt تنسيقًا موحدًا، مما يضمن التوافق بين التطبيقات والمنصات المختلفة.

التثبيت والإعداد

التثبيت عبر pip

يتم تثبيت مكتبة bcrypt بالطريقة القياسية عبر مدير الحزم pip:

pip install bcrypt

المتطلبات النظامية

لمكتبة bcrypt متطلبات نظامية بسيطة:

  • Python 3.6 أو أحدث
  • دعم أنظمة التشغيل: Windows، macOS، Linux
  • تجميع تلقائي لامتدادات C (يتطلب وجود مترجم)

التحقق من التثبيت

بعد التثبيت، يمكنك التحقق من صحة عمل المكتبة:

import bcrypt
print(bcrypt.__version__)

أساسيات العمل مع bcrypt

مبدأ عمل الخوارزمية

تستخدم bcrypt المخطط التالي للعمل:

  1. توليد ملح عشوائي
  2. تطبيق خوارزمية Blowfish بعدد محدد من الجولات
  3. إنشاء التجزئة النهائية التي تتضمن الملح والمعاملات

تنسيق التجزئة الناتجة

التجزئة الناتجة من bcrypt لها الهيكل التالي:

$2b$12$R9h/cIPz0gi.URNNX3kh2OPST9/PgBkqquzi.Ss7KIUgO2t0jWMUW

حيث:

  • $2b$ — معرف إصدار الخوارزمية
  • 12 — معامل cost (عدد الجولات)
  • R9h/cIPz0gi.URNNX3kh2O — الملح (22 حرفًا)
  • PST9/PgBkqquzi.Ss7KIUgO2t0jWMUW — التجزئة نفسها (31 حرفًا)

بداية سريعة

مثال أساسي لاستخدام bcrypt:

import bcrypt

# يجب أن تكون كلمة المرور بصيغة بايت
password = b"supersecret123"

# توليد التجزئة
hashed = bcrypt.hashpw(password, bcrypt.gensalt())
print(f"التجزئة: {hashed}")

# التحقق من كلمة المرور
if bcrypt.ch                    

توصيات