Enkripsi kata sandi dasar
Pelajaran 7 dari 8 dalam kursus Proyek Sistem Registrasi dan Login di Coddy.
Kata sandi berbahaya. Jika seseorang yang tidak berwenang mendapatkan kata sandimu, dia bisa melakukan hal berbahaya pada akunmu. Untuk mencegah orang melakukan hal seperti itu, kita perlu mengenkripsi kata sandi.
Kata sandi terenkripsi adalah kata sandi yang diubah menjadi kode rahasia yang hanya dapat dipahami oleh sistem.
Sebagai contoh, misalkan kata sandiku adalah abc, lalu kita membuat bahasa rahasia: huruf a sebenarnya adalah huruf x, huruf b sebenarnya adalah huruf a, dan huruf c sebenarnya adalah huruf v:
a -> x
b -> c
c -> v Akhirnya, kata sandi terenkripsi kita adalah: xcv. Begitulah cara kita menyimpannya di sistem. Jika seseorang berhasil meretas sistem kita dan mencuri semua kata sandi yang tersimpan, dia hanya akan menemukan kata sandi terenkripsi yang tidak berarti apa pun baginya.
Sekarang, ketika pengguna mencoba masuk ke sistem, dia akan mengetikkan kata sandi biasa: abc. Sistem kemudian akan mengubahnya menjadi kata sandi terenkripsi: xcv, lalu memeriksa apakah kata sandi terenkripsi yang diketik pengguna cocok dengan kata sandi terenkripsi yang tersimpan di sistem.
Catatan: Jangan pernah menggunakan jenis enkripsi ini dalam situasi nyata! Jenis enkripsi ini terlalu lemah dan mudah dibobol.
Tantangan
SedangBuat variabel self bernama mapping saat menginisialisasi (__init__) sistem, yang menyimpan bahasa enkripsi:
mapping = {
"a" : "i", "b" : "l", "c" : "q", "d" : "f", "e" : "z", "f" : "s",
"g" : "a", "h" : "g", "i" : "e", "j" : "p", "k" : "w", "l" : "o",
"m" : "v", "n" : "u", "o" : "b", "p" : "j", "q" : "k", "r" : "n",
"s" : "x", "t" : "d", "u" : "h", "v" : "y", "w" : "t", "x" : "m",
"y" : "r", "z" : "c"
}Buat method bernama encrypt(self, password) yang mengembalikan password terenkripsi menggunakan dictionary mapping.
Terakhir, saat seseorang mencoba mendaftar, simpan password terenkripsi, bukan password biasa. Saat seseorang mencoba masuk, lakukan pemeriksaan yang diperlukan.
Ikuti langkah-langkah berikut untuk melakukannya:
- Buat variabel
mappingyang diberikan dalam tantangan ini, lalu simpan di suatu tempat dalam class agar kamu dapat mengaksesnya melalui methodencrypt - Buat method
encrypt(self, password), lalu gunakan method tersebut untuk langkah-langkah berikutnya - Saat mendaftarkan pengguna, simpan password-nya sebagai password terenkripsi di dictionary
users - Saat pengguna mencoba masuk, pastikan kamu mengenkripsi password input yang diberikan dan memeriksa apakah password tersebut cocok dengan password yang tersimpan di dictionary
users
Coba sendiri
class LoginSystem:
def __init__(self):
self.users = {}
self.logged_users = set()
def register(self, username, password):
if username not in self.users:
self.users[username] = password
print("user registered successfuly")
else:
print("user already exists")
def login(self, username, password):
if username in self.users:
if password == self.users[username]:
self.logged_users.add(username)
print("user logged in successfully")
else:
print("password doesn't match")
else:
print("user isn't in the system")
def sign_out(self, username):
if username not in self.users:
print("user is not in the system")
elif username not in self.logged_users:
print("user is not logged in")
else:
self.logged_users.remove(username)
print("user signed out successfully")Semua pelajaran di Proyek Sistem Registrasi dan Login
Latihan sendiri: Compiler Python online