[Python]: Password Generator
Halo semuanya, selamat datang kembali! Kali ini kita akan membahas studi kasus yang menarik mengenai pembuatan password generator yang sangat berguna dalam era digital ini. Keamanan digital adalah aspek yang sangat penting, dan salah satu langkah pertama dalam menjaganya adalah dengan memiliki kata sandi yang kuat dan sulit ditebak.
Dalam artikel ini, kita akan memandu Anda dalam pembuatan generator kata sandi menggunakan bahasa pemrograman Python. Kita akan menjelajahi berbagai aspek, mulai dari mengumpulkan preferensi pengguna hingga menghasilkan kata sandi acak yang sangat aman.
Setelah mengatur preferensi dari inputan, pengguna akan menghasilkan kata sandi acak yang sangat kuat:
hM5L#8ig
Kata sandi ini menggabungkan huruf besar, huruf kecil, angka, dan simbol, sehingga sangat sulit ditebak oleh pihak yang tidak berwenang. Dengan alat seperti ini, pengguna dapat meningkatkan keamanan akun online mereka dengan mudah.
Mari kita mulai!
import random
import string
Pertama-tama kita mengimpor modul random dan string dengan fungsi yang berbeda.
Modul random
digunakan untuk menghasilkan angka acak atau elemen acak dalam Python. Dalam konteks kode tersebut, modul ini digunakan untuk memilih karakter-karakter acak yang akan digunakan dalam pembuatan kata sandi acak. Dengan kata lain, kita menggunakan random.choice(...)
untuk memilih karakter-karakter dari berbagai daftar karakter yang telah ditentukan (seperti huruf, angka, dan simbol).
Modul string
berisi berbagai konstanta dan fungsi yang berhubungan dengan string (teks) dalam Python. Dalam kode tersebut, kita menggunakan string.ascii_letters
untuk mendapatkan semua huruf alfabet besar dan kecil dalam bentuk string. Ini berguna saat kita ingin menghasilkan karakter alfabet dalam kata sandi.
print('Welcome to the password generator')
number_letters = int(input('How many letters do u want to input? '))
number_numbers = int(input('How many numbers do u want to input? '))
number_symbols = int(input('How many symbols do u want to input? '))
number_letters = int(input('How many letters do u want to input? '))
: Ini adalah bagian yang meminta input dari pengguna. Dalam baris ini, program akan mencetak pesan "Berapa banyak huruf yang ingin Anda masukkan?" dan kemudian menunggu pengguna untuk memasukkan jumlah huruf yang mereka inginkan. Angka yang dimasukkan oleh pengguna akan disimpan dalam variabel number_letters
setelah diubah menjadi tipe data integer (dengan int(...)
) karena input awalnya berupa string.
number_numbers = int(input('How many numbers do u want to input? '))
: Serupa dengan baris sebelumnya, ini meminta input dari pengguna untuk menentukan jumlah angka yang ingin dimasukkan ke dalam kata sandi. Angka yang dimasukkan oleh pengguna disimpan dalam variabel number_numbers
.
number_symbols = int(input('How many symbols do u want to input? '))
: Ini meminta input dari pengguna untuk menentukan jumlah simbol (karakter khusus seperti !, #, dll.) yang ingin dimasukkan ke dalam kata sandi. Jumlah simbol yang dimasukkan oleh pengguna disimpan dalam variabel number_symbols
.
letters = list(string.ascii_letters)
numbers = [str(i) for i in range(10)]
symbols = ['!', '#', '$', '%', '&', '(', ')', '*', '+']
letters = list(string.ascii_letters)
: Pada baris ini, kita menginisialisasi variabel letters
dengan daftar (list) yang berisi semua huruf alfabet besar (A-Z) dan huruf kecil (a-z). string.ascii_letters
adalah konstanta yang disediakan oleh modul string
dalam Python, yang berisi semua huruf alfabet besar dan kecil sebagai string tunggal. Dengan list(...)
, kita mengubah string ini menjadi daftar sehingga setiap huruf menjadi elemen terpisah dalam daftar.
numbers = [str(i) for i in range(10)]
: Ini menginisialisasi variabel numbers
dengan daftar yang berisi semua angka dari 0 hingga 9. Dalam baris ini, kita menggunakan list comprehension (penguraian daftar) untuk membuat daftar angka. Dengan range(10)
, kita menghasilkan urutan angka dari 0 hingga 9, dan str(i)
mengubah setiap angka menjadi string sehingga mereka dapat dimasukkan ke dalam daftar.
symbols = ['!', '#', '$', '%', '&', '(', ')', '*', '+']
: Ini menginisialisasi variabel symbols
dengan daftar yang berisi karakter-karakter simbol atau karakter khusus yang sering digunakan dalam kata sandi.
password_list = []
for x in range(0, number_letters):
password_list += random.choice(letters)
for x in range(0, number_numbers):
password_list += random.choice((numbers))
for x in range(0, number_symbols):
password_list += random.choice((symbols))
password_list = []
: Pada awalnya, kita membuat daftar kosong dengan nama password_list
. Daftar ini akan digunakan untuk menyimpan karakter-karakter yang akan membentuk kata sandi akhir.
Loop pertama (for x in range(0, number_letters):
): Dalam loop ini, program akan mengulangi sebanyak number_letters
kali, yang nilainya sesuai dengan jumlah huruf yang diminta oleh pengguna. Pada setiap iterasi, program akan memilih satu karakter acak dari daftar letters
(huruf alfabet besar dan kecil) menggunakan random.choice(letters)
. Karakter yang dipilih akan ditambahkan ke daftar password_list
.
Loop kedua (for x in range(0, number_numbers):
): Ini mirip dengan loop pertama, tetapi kali ini digunakan untuk mengisi daftar dengan angka-angka acak. Program mengulangi sebanyak number_numbers
kali, yang nilainya sesuai dengan jumlah angka yang diminta oleh pengguna. Pada setiap iterasi, karakter angka acak dari daftar numbers
ditambahkan ke daftar password_list
.
Loop ketiga (for x in range(0, number_symbols):
): Loop ini juga serupa, tetapi kali ini digunakan untuk mengisi daftar dengan simbol-simbol acak. Program mengulangi sebanyak number_symbols
kali, yang nilainya sesuai dengan jumlah simbol yang diminta oleh pengguna. Setiap iterasi memilih satu simbol acak dari daftar symbols
dan menambahkannya ke daftar password_list
.
password = random.shuffle(password_list)
password = ""
for y in password_list:
password += y
print(password)
random.shuffle(password_list)
: Di sini, kita menggunakan random.shuffle(...)
untuk mengacak (mengubah urutan secara acak) elemen-elemen dalam password_list
. Namun, perlu dicatat bahwa random.shuffle(...)
tidak mengembalikan nilai (return value) yang dapat disimpan dalam variabel password
. Ini berarti bahwa password
sebenarnya menjadi None
setelah baris ini dieksekusi. Sehingga, ini adalah langkah untuk mengacak password_list
, tetapi bukan langkah untuk menghasilkan kata sandi.
Kemudian kita membuat variabel password
yang awalnya kosong (string kosong ""
).
Setelah itu, kita menggunakan loop for
untuk mengambil setiap karakter dalam daftar password_list
dan menggabungkannya (concatenate) dengan variabel password
. Ini dilakukan untuk menghasilkan satu string yang merupakan kata sandi akhir.
Setelah loop selesai dieksekusi, variabel password
akan berisi kata sandi akhir yang terdiri dari karakter-karakter yang diacak sebelumnya dan disusun dalam urutan yang benar.
Maka output yang akan dihasilkan adalah sebagai berikut.

Full Code:
import random
import string
print('Welcome to the password generator')
number_letters = int(input('How many letters do u want to input? '))
number_numbers = int(input('How many numbers do u want to input? '))
number_symbols = int(input('How many symbols do u want to input? '))
letters = list(string.ascii_letters)
numbers = [str(i) for i in range(10)]
symbols = ['!', '#', '$', '%', '&', '(', ')', '*', '+']
password_list = []
for x in range(0, number_letters):
password_list += random.choice(letters)
for x in range(0, number_numbers):
password_list += random.choice((numbers))
for x in range(0, number_symbols):
password_list += random.choice((symbols))
password = random.shuffle(password_list)
password = ""
for y in password_list:
password += y
print(password)
Terima kasih! semoga artikel kali ini bermanfaat bagi kalian.
Jangan takut belajar hal baru ya!