Menu
CoddyTech

基础密码加密

Coddy 注册与登录系统项目 课程的第 7 课,共 8 课。

密码很危险。如果未经授权的人拿到你的密码,就可能对你的账户做坏事。为了防止这种情况,我们需要加密密码。

加密后的密码是转换成只有系统才能理解的秘密代码的密码。 

例如,假设我的密码是 abc,我们来创建一种秘密语言:字母 a 实际上是字母 x,字母 b 实际上是字母 a,字母 c 实际上是字母 v:

a -> x
b -> c
c -> v 

最后,我们加密后的密码是:xcv。我们就是这样把密码保存在系统中的。现在,如果有人成功入侵了我们的系统并窃取了所有保存的密码,他只能看到加密后的密码,这些密码对他来说毫无意义。

现在,当用户尝试登录系统时,他会输入自己的普通密码:abc,然后系统会将它转换为加密后的密码:xcv,并检查用户输入的加密密码是否与系统中保存的加密密码匹配。

注意:在现实生活中,绝不要使用这种加密方式!这种加密方式太弱,很容易被破解。

challenge icon

挑战

中等

在初始化(__init__)系统时,创建一个名为 mapping 的 self 变量,用来存储加密映射:

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"
}

创建一个名为 encrypt(self, password) 的方法,使用 mapping 字典返回加密后的密码。

最后,当有人尝试注册时,存储加密后的密码,而不是普通密码;当有人尝试登录时,进行必要的检查。

按以下步骤完成:

  • 创建本挑战中给出的 mapping 变量,并将它保存在类中的某处,以便通过 encrypt 方法访问它
  • 创建 encrypt(self, password) 方法,然后在接下来的步骤中使用它
  • 注册用户时,将其密码作为加密后的密码保存在 users 字典中
  • 用户尝试登录时,先加密输入的密码,并检查它是否与 users 字典中保存的密码匹配

亲手试试

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")

注册与登录系统项目中的所有课

3加密

基础密码加密项目课结语

自己练习: Python 在线编译器