1 用户密码加密
1.1 为什么对用户密码加密
大多数web系统都有登录的功能,传统的登录方式是采用用户名+密码的形式进行,下面的截图就是CSDN的登录界面。
在登录界面我们输入的肯定是明文,比如密码是123456,在密码的输入框内肯定也是输入同样的123456。输入框输入的是123456,但是在数据库是不会直接存储这一字符串的。在一个成熟系统中,数据库不会存储明文,它存储的通常是加密后的密文。比如以bcrypt加密后的密文字符串是这样的。
$2a$10$mWTEg1Byt3u/dAQl6GdJ5.UjVozRzCpxG4R64IvIvkwrJkwlfT5NG
在数据库中存储加密后的密文自然是为了安全,因为这些密码密文存在于数据库中,就算数据由于各种原因导致数据库数据泄露,其他人拿到了用户名与密码的密文也不能够通过系统进行登录。
1.2 登录逻辑简介
在系统的页面中,无论是注册或登录模块,用户输入的密码都是明文,而数据库存储密码通常是密文。程序在处理登录时是走的这样的流程:
现有一个用户拥有用户名为zhangsan,密码为123456的账号。在登录时,前端去调用后端的