Selepas membina Penjana Kata Laluan, saya mendapat beberapa ulasan yang menakjubkan, dan dua yang menonjol bagi saya: Guillaume Ste-Marie menyokong penggunaan benih untuk meningkatkan rawak, dan Christian Ledermann juga menyokong rahsia itu harus menggantikan rawak kerana rawak tidak benar-benar rawak.
Modul rahsia menjana nombor rawak kuat secara kriptografi yang sesuai untuk mengurus data seperti kata laluan, pengesahan akaun, token keselamatan dan rahsia yang berkaitan.
Mari kita mulakan dengan melihat keseluruhan kod untuk penjana kata laluan selamat kami. Jangan risau jika ia kelihatan menakutkan; kami akan memecahkannya baris demi baris dalam bahagian seterusnya.
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()
Sekarang, mari kita pecahkan perkara ini dan periksa setiap bahagian secara terperinci.
import secrets import string
Dua baris ini mengimport modul yang kami perlukan untuk penjana kata laluan selamat kami:
Modul rahsia menyediakan fungsi untuk menjana nombor rawak kuat secara kriptografi yang sesuai untuk menguruskan rahsia seperti kata laluan. Ia lebih selamat daripada modul rawak untuk tujuan kriptografi.
Modul rentetan menawarkan pemalar yang mengandungi pelbagai jenis aksara (huruf, digit, tanda baca). Ini menjimatkan kami daripada menaip secara manual semua kemungkinan aksara yang mungkin kami mahukan dalam kata laluan.
def generate_password(length=12): characters = string.ascii_letters + string.digits + string.punctuation password = ''.join(secrets.choice(characters) for _ in range(length)) return password
Fungsi ini menjana kata laluan selamat kami:
Kami mencipta aksara rentetan yang mengandungi semua aksara yang mungkin untuk kata laluan kami.
Kami menggunakan secrets.choice() untuk memilih aksara secara rawak daripada rentetan ini. Ini lebih selamat daripada menggunakan random.choice() kerana ia menggunakan penjana nombor rawak selamat secara kriptografi sistem pengendalian.
Kami menggabungkan aksara ini menjadi satu rentetan untuk membentuk kata laluan kami.
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}")
Fungsi ini mengendalikan interaksi pengguna:
if __name__ == "__main__": main()
Blok ini memastikan bahawa fungsi main() hanya dipanggil jika skrip dijalankan secara langsung, bukan jika ia diimport sebagai modul.
Berikut ialah beberapa idea untuk menambah baik penjana kata laluan anda:
Dengan menggunakan modul rahsia dan bukannya rawak, kami telah mencipta penjana kata laluan yang lebih selamat.
Atas ialah kandungan terperinci Bina Penjana Kata Laluan Python Selamat Menggunakan Secret Lib. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!