با استفاده از Secret Lib یک سازنده رمز عبور امن پایتون بسازید

Summarize this content to 400 words in Persian Lang
پس از ساختن Password Generator، نظرات شگفتانگیزی دریافت کردم، و دو مورد برای من متمایز بودند: Guillaume Ste-Marie از استفاده از seed برای افزایش تصادفی بودن دفاع میکرد، و Christian Ledermann همچنین مدافع این بود که رازها باید جایگزین تصادفی شوند، زیرا تصادفی واقعاً تصادفی نیست.
ماژول Secrets اعداد تصادفی رمزنگاری قوی مناسب برای مدیریت دادههایی مانند رمز عبور، احراز هویت حساب، توکنهای امنیتی و اسرار مرتبط تولید میکند.
کد کامل تولید کننده رمز عبور امن
بیایید با نگاه کردن به کل کد برای تولید کننده رمز عبور ایمن خود شروع کنیم. اگر ترسناک به نظر می رسد نگران نباشید. ما آن را خط به خط در بخش بعدی تجزیه می کنیم.
import secrets
import string
def generate_password(length=12):
characters = string.ascii_letters + string.digits + string.punctuation
password = ”.join(secrets.choice(characters) for _ in range(length))
return password
def main():
print(“Welcome to the Secure Password Generator!”)
try:
length = int(input(“Enter the desired password length: “))
if length <= 0:
raise ValueError(“Password length must be positive”)
except ValueError as e:
print(f”Invalid input: {e}”)
print(“Using default length of 12 characters.”)
length = 12
password = generate_password(length)
print(f”\nYour generated password is: {password}”)
if __name__ == “__main__”:
main()
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
حالا بیایید این را تجزیه کنیم و هر قسمت را به طور مفصل بررسی کنیم.
وارد کردن ماژول های لازم
import secrets
import string
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این دو خط، ماژول هایی را که برای تولید کننده رمز عبور ایمن نیاز داریم وارد می کنند:
را secrets ماژول توابعی را برای تولید اعداد تصادفی قوی رمزنگاری مناسب برای مدیریت اسرار مانند رمز عبور فراهم می کند. امن تر از random ماژول برای اهداف رمزنگاری
را string ماژول ثابت هایی را ارائه می دهد که شامل انواع مختلفی از کاراکترها (حروف، اعداد، علائم نگارشی) است. این ما را از تایپ دستی همه کاراکترهای ممکن در یک رمز عبور نجات می دهد.
تابعgene_password
def generate_password(length=12):
characters = string.ascii_letters + string.digits + string.punctuation
password = ”.join(secrets.choice(characters) for _ in range(length))
return password
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این تابع رمز عبور امن ما را ایجاد می کند:
ما یک رشته ایجاد می کنیم characters حاوی تمام کاراکترهای ممکن برای رمز عبور ما است.
استفاده می کنیم secrets.choice() برای انتخاب تصادفی کاراکترها از این رشته. این امن تر از استفاده است random.choice() زیرا از مولد اعداد تصادفی امن رمزنگاری شده سیستم عامل استفاده می کند.
ما این کاراکترها را به یک رشته متصل می کنیم تا رمز عبور خود را تشکیل دهیم.
عملکرد اصلی
def main():
print(“Welcome to the Secure Password Generator!”)
try:
length = int(input(“Enter the desired password length: “))
if length <= 0:
raise ValueError(“Password length must be positive”)
except ValueError as e:
print(f”Invalid input: {e}”)
print(“Using default length of 12 characters.”)
length = 12
password = generate_password(length)
print(f”\nYour generated password is: {password}”)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این تابع تعامل کاربر را کنترل می کند:
از کاربر درخواست طول رمز عبور می کند.
خطاهای احتمالی (مانند ورودی غیر عددی یا اعداد منفی) را کنترل می کند.
تماس می گیرد generate_password() با طول مشخص شده و نتیجه را چاپ می کند. ## اجرای اسکریپت
if __name__ == “__main__”:
main()
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این بلوک تضمین می کند که main() تابع فقط در صورتی فراخوانی می شود که اسکریپت مستقیماً اجرا شود، نه اگر به عنوان یک ماژول وارد شده باشد.
تقویت مولد رمز عبور
در اینجا چند ایده برای بهبود بیشتر تولید کننده رمز عبور آورده شده است:
مجموعه کاراکترهای سفارشی: به کاربران این امکان را می دهد که مشخص کنند چه نوع کاراکتری را در رمز عبور خود می خواهند.
Password Strength Checker: تابعی را برای ارزیابی قدرت رمز عبور ایجاد شده اجرا کنید.
Multiple Passwords: به کاربران این امکان را بدهید که چندین رمز عبور را همزمان ایجاد کنند.
رابط کاربری گرافیکی: با استفاده از کتابخانه ای مانند Tkinter یک رابط کاربری گرافیکی ایجاد کنید.
ذخیره سازی رمز عبور: یک راه امن برای ذخیره رمزهای عبور ایجاد شده، احتمالاً با رمزگذاری، پیاده سازی کنید. ## نتیجه گیری
با استفاده از secrets ماژول به جای random، ما یک تولید کننده رمز عبور ایمن تر ایجاد کرده ایم.
منبع
پس از ساختن Password Generator، نظرات شگفتانگیزی دریافت کردم، و دو مورد برای من متمایز بودند: Guillaume Ste-Marie از استفاده از seed برای افزایش تصادفی بودن دفاع میکرد، و Christian Ledermann همچنین مدافع این بود که رازها باید جایگزین تصادفی شوند، زیرا تصادفی واقعاً تصادفی نیست.
ماژول Secrets اعداد تصادفی رمزنگاری قوی مناسب برای مدیریت دادههایی مانند رمز عبور، احراز هویت حساب، توکنهای امنیتی و اسرار مرتبط تولید میکند.
کد کامل تولید کننده رمز عبور امن
بیایید با نگاه کردن به کل کد برای تولید کننده رمز عبور ایمن خود شروع کنیم. اگر ترسناک به نظر می رسد نگران نباشید. ما آن را خط به خط در بخش بعدی تجزیه می کنیم.
import secrets
import string
def generate_password(length=12):
characters = string.ascii_letters + string.digits + string.punctuation
password = ''.join(secrets.choice(characters) for _ in range(length))
return password
def main():
print("Welcome to the Secure Password Generator!")
try:
length = int(input("Enter the desired password length: "))
if length <= 0:
raise ValueError("Password length must be positive")
except ValueError as e:
print(f"Invalid input: {e}")
print("Using default length of 12 characters.")
length = 12
password = generate_password(length)
print(f"\nYour generated password is: {password}")
if __name__ == "__main__":
main()
حالا بیایید این را تجزیه کنیم و هر قسمت را به طور مفصل بررسی کنیم.
وارد کردن ماژول های لازم
import secrets
import string
این دو خط، ماژول هایی را که برای تولید کننده رمز عبور ایمن نیاز داریم وارد می کنند:
-
را
secrets
ماژول توابعی را برای تولید اعداد تصادفی قوی رمزنگاری مناسب برای مدیریت اسرار مانند رمز عبور فراهم می کند. امن تر ازrandom
ماژول برای اهداف رمزنگاری -
را
string
ماژول ثابت هایی را ارائه می دهد که شامل انواع مختلفی از کاراکترها (حروف، اعداد، علائم نگارشی) است. این ما را از تایپ دستی همه کاراکترهای ممکن در یک رمز عبور نجات می دهد.تابعgene_password
def generate_password(length=12):
characters = string.ascii_letters + string.digits + string.punctuation
password = ''.join(secrets.choice(characters) for _ in range(length))
return password
این تابع رمز عبور امن ما را ایجاد می کند:
-
ما یک رشته ایجاد می کنیم
characters
حاوی تمام کاراکترهای ممکن برای رمز عبور ما است. -
استفاده می کنیم
secrets.choice()
برای انتخاب تصادفی کاراکترها از این رشته. این امن تر از استفاده استrandom.choice()
زیرا از مولد اعداد تصادفی امن رمزنگاری شده سیستم عامل استفاده می کند. -
ما این کاراکترها را به یک رشته متصل می کنیم تا رمز عبور خود را تشکیل دهیم.
عملکرد اصلی
def main():
print("Welcome to the Secure Password Generator!")
try:
length = int(input("Enter the desired password length: "))
if length <= 0:
raise ValueError("Password length must be positive")
except ValueError as e:
print(f"Invalid input: {e}")
print("Using default length of 12 characters.")
length = 12
password = generate_password(length)
print(f"\nYour generated password is: {password}")
این تابع تعامل کاربر را کنترل می کند:
- از کاربر درخواست طول رمز عبور می کند.
- خطاهای احتمالی (مانند ورودی غیر عددی یا اعداد منفی) را کنترل می کند.
- تماس می گیرد
generate_password()
با طول مشخص شده و نتیجه را چاپ می کند. ## اجرای اسکریپت
if __name__ == "__main__":
main()
این بلوک تضمین می کند که main()
تابع فقط در صورتی فراخوانی می شود که اسکریپت مستقیماً اجرا شود، نه اگر به عنوان یک ماژول وارد شده باشد.
تقویت مولد رمز عبور
در اینجا چند ایده برای بهبود بیشتر تولید کننده رمز عبور آورده شده است:
- مجموعه کاراکترهای سفارشی: به کاربران این امکان را می دهد که مشخص کنند چه نوع کاراکتری را در رمز عبور خود می خواهند.
- Password Strength Checker: تابعی را برای ارزیابی قدرت رمز عبور ایجاد شده اجرا کنید.
- Multiple Passwords: به کاربران این امکان را بدهید که چندین رمز عبور را همزمان ایجاد کنند.
- رابط کاربری گرافیکی: با استفاده از کتابخانه ای مانند Tkinter یک رابط کاربری گرافیکی ایجاد کنید.
- ذخیره سازی رمز عبور: یک راه امن برای ذخیره رمزهای عبور ایجاد شده، احتمالاً با رمزگذاری، پیاده سازی کنید. ## نتیجه گیری
با استفاده از secrets
ماژول به جای random
، ما یک تولید کننده رمز عبور ایمن تر ایجاد کرده ایم.
منبع