Menu
CoddyTech

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.

challenge icon

Tantangan

Sedang

Buat 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 mapping yang diberikan dalam tantangan ini, lalu simpan di suatu tempat dalam class agar kamu dapat mengaksesnya melalui method encrypt
  • 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

3Enkripsi

Enkripsi kata sandi dasarPelajaran proyekKata penutup

Latihan sendiri: Compiler Python online