لذا، سأكتب برنامجًا بلغة بايثون لتوليد كلمات مرور قوية لا يمكن اختراقها. أولاً، أحتاج إلى معرفة الخصائص التي تتمتع بها كلمة المرور القوية. عادةً، يجب أن تكون طويلة، وتحتوي على مزيج من الأحرف الكبيرة والصغيرة والأرقام والأحرف الخاصة. لذا، أحتاج إلى مراعاة هذه الخصائص.

أولاً، أعتقد أنني بحاجة إلى استخدام وحدة random لاختيار الأحرف عشوائيًا. قد أحتاج أيضًا إلى وحدة string للحصول على مجموعة الأحرف المطلوبة. على سبيل المثال، string.ascii_letters للأحرف الكبيرة والصغيرة، وstring.digits للأرقام، وstring.punctuation للأحرف الخاصة. بعد ذلك، أحتاج إلى تحديد طول كلمة المرور. عادةً ما يُنصح بأن تكون 12 حرفًا على الأقل. قد يكون من الأفضل أن يتمكن المستخدم من تحديد الطول، لذا سأفكر في معلمة اختيارية للوظيفة.

أحتاج إلى التأكد من أن كلمة المرور المُولدة تحتوي على مثيل واحد على الأقل لكل فئة أحرف. على سبيل المثال، حرف كبير واحد، وحرف صغير واحد، ورقم واحد، وحرف خاص واحد. وبهذه الطريقة، تقل احتمالية ضعف كلمة المرور. بعد إنشاء كلمة المرور، أحتاج إلى التحقق مما إذا كانت تلبي الشروط. إذا لم تكن كذلك، فأنا بحاجة إلى إنشاء كلمة المرور مرة أخرى. قد يتطلب هذا حلقة while حتى يتم استيفاء جميع الشروط. أحتاج أيضًا إلى السماح للمستخدم باختيار مستوى الأمان. على سبيل المثال، أحرف وأرقام منخفضة المستوى فقط، وأحرف وأرقام وأحرف خاصة متوسطة المستوى، وكل شيء عالي المستوى بطول أطول. قد أضيف هذا الجزء إلى الوظيفة مع معلمات أخرى. قد يرغب المستخدم في إنشاء المزيد من كلمات المرور، لذا قمت بتصميم الوظيفة لتوليد وعرض كلمات مرور متعددة.

قم بشراء خادم افتراضي عالي السرعة بسعر اقتصادي من Radib، انقر فوق

بعد كتابة الوظيفة الرئيسية، أحتاج إلى تضمين مثال لكيفية استخدام الوظيفة حتى يتمكن المستخدم من استخدامها بسهولة. أحتاج أيضًا إلى إضافة توضيحات حول معلمات الوظيفة ومخرجاتها. والأهم من ذلك، أحتاج إلى التأكد من أنني أستخدم مصادر آمنة لتوليد أرقام عشوائية. وحدة الأسرار في بايثون أكثر ملاءمة لهذا الغرض لأنها أكثر أمانًا من الناحية التشفيرية. لذا فمن الأفضل استخدام الأسرار بدلاً من العشوائية. أخيرًا، أقوم باختبار عمل الكود بشكل صحيح وتلبية جميع المتطلبات. على سبيل المثال، أتحقق من أن كلمة المرور بطول صحيح وأنها تحتوي على جميع مجموعات الأحرف المطلوبة.

هذا برنامج Python لتوليد كلمات مرور قوية وغير قابلة للتخمين وفقًا لمبادئ الأمان الحديثة. اتبع هذا البرنامج التعليمي من Radib:

import secrets
import string
from typing import List

def generate_strong_password(length: int = 16,
                            include_uppercase: bool = True,
                            include_lowercase: bool = True,
                            include_digits: bool = True,
                            include_symbols: bool = True,
                            exclude_similar: bool = True) -> str:
    """
    دالة لإنشاء كلمات مرور قوية وفقًا للمواصفات المطلوبة
    المعاملات:
    length: طول كلمة المرور (يُوصى بألا يقل عن 12 حرفًا)
    include_uppercase: تضمين الأحرف الكبيرة
    include_lowercase: تضمين الأحرف الصغيرة
    include_digits: تضمين الأرقام
    include_symbols: تضمين الرموز
    exclude_similar: استبعاد الأحرف المتشابهة مثل Il1O0
    """
    
    # تعريف مجموعات الأحرف
    characters = []
    uppercase = string.ascii_uppercase  # الأحرف الكبيرة الإنجليزية
    lowercase = string.ascii_lowercase  # الأحرف الصغيرة الإنجليزية
    digits = string.digits  # الأرقام من 0 إلى 9
    symbols = '!@#$%^&*()_+-=[]{}|;:,.<>?'  # الرموز الخاصة
    
    # استبعاد الأحرف المتشابهة إذا تم الطلب
    if exclude_similar:
        uppercase = uppercase.translate(str.maketrans('', '', 'IO'))  # استبعاد I و O
        lowercase = lowercase.translate(str.maketrans('', '', 'l'))  # استبعاد l
        digits = digits.translate(str.maketrans('', '', '01O'))  # استبعاد 0 و 1 و O
        symbols = symbols.translate(str.maketrans('', '', '|;<>'))  # استبعاد بعض الرموز
    
    # جمع الأحرف المطلوبة
    if include_uppercase:
        characters.append(uppercase)
    if include_lowercase:
        characters.append(lowercase)
    if include_digits:
        characters.append(digits)
    if include_symbols:
        characters.append(symbols)
    
    # التأكد من اختيار نوع واحد على الأقل
    if not characters:
        raise ValueError("يجب اختيار نوع واحد على الأقل من الأحرف")
    
    # إنشاء كلمة المرور
    all_chars = ''.join(characters)  # دمج جميع الأحرف المختارة
    password = []
    
    # التأكد من وجود حرف واحد على الأقل من كل نوع
    for charset in characters:
        password.append(secrets.choice(charset))
    
    # إكمال طول كلمة المرور المطلوب
    for _ in range(length - len(characters)):
        password.append(secrets.choice(all_chars))
    
    # خلط الأحرف عشوائيًا
    secrets.SystemRandom().shuffle(password)
    
    return ''.join(password)

# مثال للاستخدام:
if __name__ == "__main__":
    # إنشاء 5 كلمات مرور بطول 20 حرفًا
    print("كلمات مرور قوية:")
    for _ in range(5):
        password = generate_strong_password(length=20)
        print(f"• {password}")

    # إنشاء كلمة مرور بطول 16 حرفًا بدون رموز
    simple_pass = generate_strong_password(include_symbols=False)
    print(f"\nكلمة مرور بدون رموز: {simple_pass}")

ميزات الأمان لهذه الخوارزمية:

شراء خادم سحابي كل ساعة لاختبار الأكواد الخاصة بك، انقر

1. يستخدم وحدة "secrets" بدلاً من "random" التي تعد أكثر ملاءمة لأغراض الأمان
2. ينشئ كلمات مرور مكونة من 16 حرفًا افتراضيًا
3. يزيل الأحرف المتشابهة بشكل اختياري (مثل 1 وl وI)
4. ضمان حرف واحد على الأقل من كل فئة مختارة
5. تركيبة عشوائية متقدمة باستخدام الخلط الآمن
6. القدرة على ضبط أنواع الأحرف
7. إنشاء أحرف ذات توزيع موحد

مزايا هذه الطريقة مقارنة بالخوارزميات الشائعة:

- مقاومة لهجمات القوة الغاشمة
- منع الأنماط المتوقعة
- إزالة الأحرف الأساسية (لتقليل أخطاء الإدخال)
- استخدام مصدر آمن للأرقام العشوائية
- المرونة في إعدادات الأمان

التوصيات للاستخدام الآمن:

1. استخدم الحد الأدنى من الطول وهو 12 حرفًا
2. قم بتمكين جميع أنواع الأحرف
3. لا تقم بإعادة استخدام كلمات المرور التي تم إنشاؤها في خدمات مختلفة< 4. قم بتخزين كلمات المرور في مدير كلمات مرور آمن
5. قم بتحديث كلمات المرور المهمة كل 3-6 أشهر

هل كانت المقالة مفيدة ؟ 101 أعضاء وجدوا هذه المقالة مفيدة (101 التصويتات)