加密/加盐存储在数据库里的数据都是明文的, 如果数据库被盗, 数据就被泄露了;所以要进行加密密码算法对称密码算法: 加密和解密的算法用同一个; x明文,y密文 , f() 加密算法 y f(x) , x f(y) ;常见: AES , DES非对称密码算法: 公钥和私钥 ; 使用公钥进行加密 , 使用私钥进行解密 ;常见: REA , DSA摘要算法: 把任意长度的输入数据,转换成固定长度的输出数据 ; (不可逆的,加密后无法恢复) ;常用: MD5 , CRCMD51.MD5加密后如何验证同一个明文经过同样的摘要算法,得到的结果是一样的 ;验证方法: 验证摘要算法处理结果, 只要两个加密后的密文 是一样的, 那么明文相同2.为何网站可以解密MD5因为同一个明文,进行MD5加密后的 密文都是一样的, 所以 可以根据这个把常见的明文和密文保存起来 ;盐值 salt当 一个简单的明文, 很容易 被解密(被列举) 出来 , 那么 通过加 盐值,来实现 让明文变成复杂的明文明文 salt 复杂的明文此时在进行MD5加密 密文, 这样的密文就不容易被解密salt 要保证是 随机盐值随机盐值怎么验证数据库上存储的信息是 加上随机盐值后的密文待验证的明文(用户输入的数据),验证方式: 待验证的明文 随机验证 , 进行加密后 和 数据库的密文进行对比加密的实现流程1.用户注册生成随机盐值用户明文密码随机盐值, 通过MD5加密保存随机盐值, 和密文2.用户登录(校验)获取用户的随机盐值待验证的明文 第一步获取的盐值, 进行MD5加密判断 第二步加密后的密文 和 数据库保存的密文是否一致 ;加密实现 (SecurityUitls 安全实现)DigestUtils (MD5加密)spring提供的MD5加密方式 加密成 密文 (32位的小写密文)UUID (获取盐值 salt)UUID是 JDK提供的 ,在util包下 ,用来获取一段 随机字符串, 这个字符串很长 (36位的小写字符串, 如果把-去掉就是32位字符串, 长得和 上面的MD5加密后的字符串一模一样)(UUID的用法例子: 购物平台在用户未登录的时候,也可以根据用户的喜好来进行推荐, 用的就是UUID , UUID作为和user_id对应的,因为UUID的字符串基本上是不重复的, 通过把UUID和用户的设备进行绑定, 就可以实现类似于user_id的方式来区分用户)存储盐值和密文存储盐值去掉- 后就和加密后的密文一样了 , 把盐值和密文存在一起, 黑客入侵我们数据库拿到的数据,就不好破解因为密文和盐值存储的方式有很多种: 可以 密文里插入一点盐值, 盐值里加插入一点密文 ....非常多的方法, 进行存储, 这样破解数据的难度都会非常大 ;加密实现密文的内容 (盐值明文) MD5加密存放到数据库的数据 盐值 密文(可以专门设置复杂的方式存放)验证 verify验证加密:拿到 数据库存储的 数据 :sqlPassword从 数据库数据里获取到盐值 :salt(通过存放时的方式获取到盐值)将 salt 和 用户输入的密码 进行加密:securityPassword盐值securityPassword 拼接(拼接的方式,也是 存放数据库时存放的方式) :finalPassword把 最后得到的数据finalPassword和 数据库里存储的数据sqlPassword,进行对比, 如果相同,则表示相同