رشن | خدمات میزبانی وب

تولید رمز تصادفی در پایتون

ممکن است برخی از رمزهای خود را بخواهید پیچیده کنید و قابل تشخیص نباشد و حتی خودتان هم شاید نیازی به حفظ کردن آن نداشته باشید، مثل رمز یوزرنیم دیتابیس. یا هم مثل من که وظیفه حفظ رمزها را به مرورگر سپردم و تمامی رمزهایم را تصادفی تنظیم کردم.

خب، این کار در پایتون و فقط در چند خط ممکن است! زیبا نیست؟


برای این کار ابتدا باید ماژول‌های string و random را در برنامه ایمپورت کنیم تا string برای ما رشته کاراکتر تولید کند و random هم با توجه به دیتایی که به آن می‌دهیم چیزی تصادفی به ما برگرداند.

Python
  1. import string
  2. import random

بعد از آن نوبت به این می‌رسد که یک تابع تعریف کنیم تا نوع کاراکترهایی که می‌خواهیم از آن‌ها استفاده کنیم را مشخص کنیم و بعد هم با ماژول random که ایمپورت کردیم رشته تصادفی تولید کنیم.

کد کامل برنامه به این شکل هست که توضیح می‌دهم:

Python
  1. import string
  2. import random
  3. def password(size=8, chars=string.ascii_letters + string.digits +
  4. string.punctuation):
  5. return ''.join(random.choice(chars) for _ in range(size))
  6. print(password(int(input('How many characters in your password? '))))

پارامتری به نام chars به این تابع می‌دهیم که chars یک متغیر هست که در آن به ماژول string دسترسی پیدا می‌کنیم و از طریق آن شئ یا objectی به نام ascii_letters دسترسی پیدا می‌کنیم که این آبجکت در حقیقت به این صورت در ماژول string تعریف شده است:

Python
  1. ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz'
  2. ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  3. ascii_letters = ascii_lowercase + ascii_uppercase

که خب همان‌طور که مشخص است شامل تمامی حروف بزرگ و کوچک زبان انگلیسی می‌شود.

بعدش به شئ digits دسترسی پیدا می‌کنیم که شامل اعداد از 0 تا 9 می‌شود.

برای راهنمایی بیشتر در خصوص این ماژول می‌توانید این لینک را مطالعه کنید.

آبجکت punctuation هم شامل کاراکترهای خاص می‌شود.

حالا کاری که می‌خواهیم این تابع انجام دهد این است که با استفاده از دیتایی که به متغیر chars دادیم برای ما یک رشته تصادفی از آن کاراکترها تولید کند.


در هنگام فراخوانی تابع هم از کاربر می‌پرسیم رمزش می‌خواهد چند کاراکتر باشد تا تابع ما یک رشته تصادفی به همان تعداد کاراکتر تولید کند.


حالا یک بار برنامه را اجرا می‌کنیم.

Python
  1. import string
  2. import random
  3. def password(size=8, chars=string.ascii_letters + string.digits +
  4. string.punctuation):
  5. return ''.join(random.choice(chars) for _ in range(size))
  6. print(password(int(input('How many characters in your password? '))))

ورودی کاربر:

Code
  1. 8

خروجی برنامه:

Code
  1. <#hJUhU_

و هر بار که برنامه را اجرا کنید به شما یک رشته دیگر برمی‌گرداند.