课程名称:SpringBoot2.X + Vue + UniAPP,全栈开发医疗小程序
课程章节:第三章 使用Vue3.0+SpringBoot实现医护人员管理
课程讲师: 神思者
课程内容:
医院管理人员想要管理医护信息,首先要登陆MIS系统。登陆MIS系统的密码必然要加密存储到数据库中。
mis_user
数据表是MIS系统的用户表,所有能登陆MIS系统的帐户都保存在这张表里面。首先要明确:不是医院所有的工作人员都能登陆MIS系统。例如医护人员可以登录MIS系统,但是保安就不需要用MIS系统,所以在mis_user
表中给需要使用MIS系统的用户创建帐户。
用户的密码需要加密之后再保存到数据库中,这里选择不可逆的哈希算法加密用户的密码。哈希算法有两种常见的实现方案:MD5和SHA。哪种安全性都挺高的,无法暴力破解。
虽然算法层面破解不了哈希算法,于是就有人另辟蹊径了。他把各种字符串文字都用哈希算法生成加密结果,俗称哈希字典。然后把要破解的哈希值,代入哈希字典,看看能跟哪个记录对得上,于是就得出原始数据是什么了。现在网上就有哈希字典可以下载,所以用哈希加密的结果很容被破解。
为了防御哈希字典破解,可以对数据做多次哈希加密。比如说第一次用MD5加密,然后再用SHA加密。虽然这么做也能起到一定的防破解作用。
因为哈希值通常是16、32、64个字符组成,所以用哈希字典破解了SHA算法原始数据之后,黑客马上就能识别出来原始数据是用哈希加密过的,于是套用到哈希字典再解密一次。
如果我们混淆了原始数据,那么即便黑客破解了原始数据也无法使用。比如说我们对用户原始密码生成哈希值,用哈希值前六位和后三位字符,与原始密码拼接,然后再用哈希算法生成加密结果。即便黑客破解了原始数据,但是这个原始数据并不是用户的密码,黑客用这个混淆过的密码字符串是无法登陆系统的。
在MisUserDao.xml
文件中,声明用于登陆的SQL语句。
<select id="login" parameterType="Map" resultType="Integer">
SELECT "id"
FROM HOSPITAL.MIS_USER
WHERE "username" = #{username}
AND "password" = #{password}
</select>
在com.example.hospital.api.db.dao
包MisUserDao
接口中,声明DAO方法。
public interface MisUserDao {
……
public Integer login(Map param);
}
课程收获:通过视频加文档结合的方式,了解了Hash加盐对Password加密,期待后续学习!