up:: Spring Boot电商项目用户模块注册接口开发之全局统一处理异常
说明:
(1) 以前遇到过的使用MD5来保护密码的地方有:
● 第一次遇到是在:【封装Md5Utils加密工具类】;
●【完成会员注册功能】中也遇到了;
● 只是,上面的两个地方,我们都是使用的Apache组件包【Commons Codec】来实现MD5的;而本篇博客有点不同,没有使用Apache组件包【Commons Codec】;而是使用的Java自己提供的工具:java.security下的MessageDigest,来实现MD5的使用;
(2) 本篇博客需要注意的点:
● PS:现在在很多实际项目中,大家都不用MD5来实现加密了;
● 其实MD5是一种哈希算法,其会利用哈希的方式,把一个一种字符串转化为另一种难以辨认的字符串;同时,这个过程是无法反推的,所以MD5不具备解密的能力;所以,MD5只是一种哈希算法,其并不是一种严格意义上的加密算法;
● 这儿我们创建了Constant类,专门用来存放程序中可能用到的常量;而盐值就存放在了Constant类中;
1.为什么需要对密码进行加密;(以前说过好多次,这儿爱看不看)
所以,我们应该对密码进行加密处理;这样以后,即使数据库被攻破,黑客获取的也是加了密的密码,使用这个加密的密码,是登不进系统的;
2.创建MD5Utils工具类,完成【MD5实现加密效果的逻辑】;
MD5Utils类:
说明:
(1) 因为这是个工具类,所以方法定义成static静态的,方便被调用;
(2) Java中给我们准备了很多工具;比如,这儿我们就使用了java.security中的MessageDigest,来实现MD5的使用;
(3) MessageDigest的使用;
(4) 我们得到的MD5字符串,进行Base64转码,以便存储;至于这儿为什么要进行Base64转码,为此,我们在【补充Base64转码】中,对其做了一个比较详细的介绍;
然后,需要注意,这儿我们使用的是Tomcat中的Base64;
(5) 单纯使用MD5去实现解密效果是不够的,还需要要加盐;比如这个【https://www.cmd5.com/】破解网站;
加盐:在原始字符串的基础上,随机的添加一些特别难以破解的值;盐值,不能写的过于简单,要写复杂点,否则还是可能被破解的;
(6) 创建了Constant类,专门用来存放程序中可能用到的常量;而盐值就存放在了Constant类中;
3.在项目中,使用MD5,来加密密码;
启动程序,观察效果;
那么,至此,我们就完成了【注册】接口的开发;