امنیت

ساخت پسورد قوی با پایتون

()

داشتن یک پسورد ضعیف و یا یک رمز عبور در همه جا مشکل ساز و در برخی اوقات خطرناک است. در این مقاله ساخت پسورد قوی با پایتون را خواهید آموخت. قبل از هر چیز باید رمزگذاری و تکنیک های آن را بدانیم، برای داشتن یک پسورد خوب چند اصل را باید در نظر بگیریم: ۱- طول کاراکتر
۲- نوع کاراکتر و ۳- پیچیدگی آن.

  1. طول کاراکتر این پارامتر باید مقدار بهینه ای داشته باشد. یعنی نه کم باشد که قابل حدس و یا محاسبه برای کامپیوتر باشد و نه اینقدر طولانی که غیر قابل نگهداری در ذهن باشد. مقدار توصیه شده در اکثر سایت ها ۸ و بیشتر از ۸ کاراکتر است، زیرا جایگشت های این عدد به بالا از سختی مناسبی برخوردار است.
  2. نوع کاراکتر باید شامل مواردی چون: عدد ، حروف (بعضاً کوچک و یزرگ) و علائمی
    مانند: $ ، ! @ و غیره باشد.
  3. پیچیدگی شامل ترکیبی از عناصر بالا که قابل حدس نبوده ولی کاربر آن را بفهمد و فراموش نکند.

ساخت پسورد قوی با پایتون

خب رسیدیم به قسمت کد نویسی ویژگی هایی که برنامه ما دارد به شرح زیر است:

  • طول پسورد خروجی ما ۱۰ کاراکتر است ولی شما می توانید آن را تغییر دهید.
  • نوع کاراکتر شامل حروف بزرگ و کوچک انگلیسی، اعداد و علائم آن است.
  • در پیچدگی آن نیز از کتابخانه و توابع رندم (random) استفاده کردیم.
  • توجه کنید برای کپی کردن کد اعداد آن را به انگلیسی تغییر دهید.

توضیحات کد:
MAX_LEN حداکثر طول پسورد تولیدی را مشخص می کند. همان طور که می بینید کتابخانه ای برای استفاده از مجموعه یا همان آرایه به برنامه اضافه کردیم و در چهار پارامتر DIGITS ، LOCASE_CHARACTERS ، UPCASE_CHARACTERS ، SYMBOLS از آن استفاده کردیم. سپس هر کدام از متغیر های زیر را به تابع رندم دادیم، و هر یک را در متغییری جدا دخیره کریم و بعد در متغیر temp_pass آنان را به هم چسباندیم که ۴ کاراکتر آن ساخته می شود و برای بقیه با استفاده از توابع array و random و حلقه for همان طور که  در کد ها می بینید، آن ها را ساختیم.
حلقه for هشت بار تکرار می شود تا بقیه کارکتر ها را تولید کند. در نهایت نتیجه
حقله فوق را در for نهایی با اضافه کردن به رشته password آن را ساخته و در نهایت چاپ می کند.

import random
import array
 
# maximum length of password needed
# this can be changed to suit your password length
MAX_LEN = 12
 
# declare arrays of the character that we need in out password
# Represented as chars to enable easy string concatenation
DIGITS = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']  
LOCASE_CHARACTERS = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 
                     'i', 'j', 'k', 'm', 'n', 'o', 'p', 'q',
                     'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
                     'z']
 
UPCASE_CHARACTERS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 
                     'I', 'J', 'K', 'M', 'N', 'O', 'p', 'Q',
                     'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y',
                     'Z']
 
SYMBOLS = ['@', '#', '$', '%', '=', ':', '?', '.', '/', '|', '~', '>', 
           '*', '(', ')', '<&# 039]
 
# combines all the character arrays above to form one array
COMBINED_LIST = DIGITS + UPCASE_CHARACTERS + LOCASE_CHARACTERS + SYMBOLS
 
# randomly select at least one character from each character set above
rand_digit = random.choice(DIGITS)
rand_upper = random.choice(UPCASE_CHARACTERS)
rand_lower = random.choice(LOCASE_CHARACTERS)
rand_symbol = random.choice(SYMBOLS)
 
# combine the character randomly selected above
# at this stage, the password contains only 4 characters but 
# we want a 12-character password
temp_pass = rand_digit + rand_upper + rand_lower + rand_symbol
 
 
# now that we are sure we have at least one character from each
# set of characters, we fill the rest of
# the password length by selecting randomly from the combined 
# list of character above.
for x in range(MAX_LEN - 4):
    temp_pass = temp_pass + random.choice(COMBINED_LIST)
    # convert temporary password into array and shuffle to 
    # prevent it from having a consistent pattern
    # where the beginning of the password is predictable
    temp_pass_list = array.array(&# 039;u&# 039;, temp_pass)
    random.shuffle(temp_pass_list)
 
# traverse the temporary password array and append the chars
# to form the password
password = ""
for x in temp_pass_list:
        password = password + x
         
# print out password
print(password)

چقدر این پست برای شما مفید بود?

از کجا بفهمیم جیمیل هک شده است؟ - 2021 - 1400
خواندن

لطفا برای امتیاز روی یک ستاره کلیک کنید.

Average rating / ۵. Vote count:

هیچ امتیازی تا الان ثبت نشده! اولین نفری باشید که به این پست امتیاز می دهید.

متاسفیم که این پست برای شما مفید نبود!

اجازه دهید این پست را بهبود ببخشیم!

به ما بگویید چگونه می توانیم این پست را بهبود ببخشیم؟

نمایش بیشتر

محمد حسین جعفری

ی آدم معمولی که هرچی بلده میخواد رو کنه

نوشته های مشابه

1 دیدگاه

  1. کد رو به صورت زیر اصلاح کردم حالا میشه چندتا پسورد داشت بعد هر اجرا البته با یه الگوریتم ساده تر هم میشد همین حرکت رو پیاده کرد ولی اینم جالب بود اینم خیلی ممنون بابت این مطلب

    #!/usr/bin/python3.8

    import random
    import array

    DIGITS = [‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’]

    LOCASE_CHARACTERS = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’,
    ‘i’, ‘j’, ‘k’, ‘m’, ‘n’, ‘o’, ‘p’, ‘q’,
    ‘r’, ‘s’, ‘t’, ‘u’, ‘v’, ‘w’, ‘x’, ‘y’,
    ‘z’]

    UPCASE_CHARACTERS = [‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’,
    ‘I’, ‘J’, ‘K’, ‘M’, ‘N’, ‘O’, ‘p’, ‘Q’,
    ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’, ‘Y’,
    ‘Z’]

    SYMBOLS = [‘@’, ‘#’, ‘$’, ‘%’, ‘=’, ‘:’, ‘?’, ‘.’, ‘/’, ‘|’, ‘~’, ‘>’,
    ‘*’, ‘(‘, ‘)’, ‘<&# 039']

    COMBINED_LIST = DIGITS + UPCASE_CHARACTERS + LOCASE_CHARACTERS + SYMBOLS

    MAX_LEN = 12

    NUMBER_OF_PASSWORD = 2

    for i in range(NUMBER_OF_PASSWORD):

    rand_digit = random.choice(DIGITS)
    rand_upper = random.choice(UPCASE_CHARACTERS)
    rand_lower = random.choice(LOCASE_CHARACTERS)
    rand_symbol = random.choice(SYMBOLS)
    temp_pass = rand_digit + rand_upper + rand_lower + rand_symbol
    password = ""

    for x in range(MAX_LEN – 4):
    temp_pass = temp_pass + random.choice(COMBINED_LIST)
    temp_pass_list = array.array("u", temp_pass)

    random.shuffle(temp_pass_list)

    for x in temp_pass_list:
    password = password + x

    print(password)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا