ممکن است برخی از رمزهای خود را بخواهید پیچیده کنید و قابل تشخیص نباشد و حتی خودتان هم شاید نیازی به حفظ کردن آن نداشته باشید، مثل رمز یوزرنیم دیتابیس. یا هم مثل من که وظیفه حفظ رمزها را به مرورگر سپردم و تمامی رمزهایم را تصادفی تنظیم کردم.
خب، این کار در پایتون و فقط در چند خط ممکن است! زیبا نیست؟
برای این کار ابتدا باید ماژولهای string و random را در برنامه ایمپورت کنیم تا string برای ما رشته کاراکتر تولید کند و random هم با توجه به دیتایی که به آن میدهیم چیزی تصادفی به ما برگرداند.
بعد از آن نوبت به این میرسد که یک تابع تعریف کنیم تا نوع کاراکترهایی که میخواهیم از آنها استفاده کنیم را مشخص کنیم و بعد هم با ماژول random که ایمپورت کردیم رشته تصادفی تولید کنیم.
کد کامل برنامه به این شکل هست که توضیح میدهم:
import string
import random
def password(size=8, chars=string.ascii_letters + string.digits +
string.punctuation):
return ''.join(random.choice(chars) for _ in range(size))
print(password(int(input('How many characters in your password? '))))
پارامتری به نام chars به این تابع میدهیم که chars یک متغیر هست که در آن به ماژول string دسترسی پیدا میکنیم و از طریق آن شئ یا objectی به نام ascii_letters دسترسی پیدا میکنیم که این آبجکت در حقیقت به این صورت در ماژول string تعریف شده است:
ascii_lowercase = 'abcdefghijklmnopqrstuvwxyz'
ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
ascii_letters = ascii_lowercase + ascii_uppercase
که خب همانطور که مشخص است شامل تمامی حروف بزرگ و کوچک زبان انگلیسی میشود.
بعدش به شئ digits دسترسی پیدا میکنیم که شامل اعداد از 0 تا 9 میشود.
برای راهنمایی بیشتر در خصوص این ماژول میتوانید این لینک را مطالعه کنید.
آبجکت punctuation هم شامل کاراکترهای خاص میشود.
حالا کاری که میخواهیم این تابع انجام دهد این است که با استفاده از دیتایی که به متغیر chars دادیم برای ما یک رشته تصادفی از آن کاراکترها تولید کند.
در هنگام فراخوانی تابع هم از کاربر میپرسیم رمزش میخواهد چند کاراکتر باشد تا تابع ما یک رشته تصادفی به همان تعداد کاراکتر تولید کند.
حالا یک بار برنامه را اجرا میکنیم.
import string
import random
def password(size=8, chars=string.ascii_letters + string.digits +
string.punctuation):
return ''.join(random.choice(chars) for _ in range(size))
print(password(int(input('How many characters in your password? '))))
ورودی کاربر:
خروجی برنامه:
و هر بار که برنامه را اجرا کنید به شما یک رشته دیگر برمیگرداند.
نظرات 2
عاشق پایتون
توی سایت های فارسی دنبالش بودم که فقط این جا پیداش کردم.
ممنون از سایت خوب تون
shadowchet
منم همینطور واقعا مرسی