课程名称:SpringBoot+Vue3 项目实战,打造企业级在线办公系统
课程章节:第三章
主讲老师:深思者
课程内容:
课程时序
用户密码的加密解密
课程收获:
1.课程时序
用户在前端填写username, password,前端页面发送ajax请求,ajax请求后端UserController类中定义login方法,对用户信息的后端验证功能,调用UserServiceImpl的UserService实现接口的子类,并在该类中申明login方法。此时用Controller的login方法去调用Service的login方法,将username, password传递到Service,Service调用Dao,Dao中login方法执行SQL语句,返回的是Integer类型的值,这是用户数据的主键值,用Integer是因为在查询不到用户时可以返回null,而int不行。
Service拿到返回结果后将返回的结果提交给Controller,此时Controller再调用Service中的searchUser Permissions方法,并用这个方法去调用Dao中的searchUserPermissions方法,返回的结果是Set集合,最后Controller返回给前端程序的结果是一个权限的集合与布尔值
2.用户密码的加密解密
存在表中的密码 安全起见 不能使用明文 所以需要对用户密码进行加密处理 , 使用username 作为密钥对 password进行加密
MySQL数据库提供了内置的DES加密和解密的函数,我们只需要调用即可。加密的函数叫做`AES_ENCRPT()`,解密的函数叫做`AES_DECRPT()`
因为加密后的字节数据在UTF8字符集中会出现乱码,所以我把字节数据转换成16进制数据(HEX)
密码加盐: 我们通常会将用户的密码进行 Hash 加密,如果不加盐,即使是两层的 md5 都有可能通过彩虹表的方式进行破译。彩虹表就是在网上搜集的各种字符组合的 Hash 加密结果。而加盐,就是人为的通过一组随机字符与用户原密码的