前端 后端 MD5加盐

1,为何要加密?

明文在网络中传输,容易被黑客攻击,存在数据泄露危险

2,什么是md5加密?

MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),32位

MD5算法无法防止碰撞,存在被暴力破解的风险,所以引入加盐处理

盐为自定义的一串随机数,如 tsydkd

加盐做法:按照一定的规则,将数据和盐进行组合,使用MD5算法加密组合后的数据

例如:加密组合公式

md5(数据+盐)

或者

md5(盐+数据+盐)

3,加密代码

3.1 前端加密

前端 后端 MD5加盐_第1张图片
代码:

引入js插件
前端 后端 MD5加盐_第2张图片
加盐加密
前端 后端 MD5加盐_第3张图片

3.2 后端加密

前端 后端 MD5加盐_第4张图片

代码:

直接使用工具类

引入包文件 import cn.hutool.crypto.SecureUtil;

以对sys表指定字段加密为例

sys表字段


  `ID` bigint(20) unsigned NOT NULL,
  `NAME` varchar(128) NOT NULL COMMENT '名称',
  `CREATE_TIME` datetime NOT NULL COMMENT '创建时间',
  `CHECKSUM` varchar(64) DEFAULT NULL COMMENT '校验和',
  `SALT` varchar(16) DEFAULT NULL COMMENT '盐',
  

加密信息,校验结果存储:


	SysEntity sysEntity=new SysEntity();
	sysEntity.setCreateTime(new Date());
    String checkdata = sysEntity.getName().toString() + sysEntity.getCreateTime();//加密的字段
    String salt = RandomUtil.randomString(6);//随机生成盐
    sysEntity.setSalt(salt);
    sysEntity.setChecksum(SecureUtil.md5(checkdata + salt));//校验和
    save(sysEntity);
            

校验数据是否被篡改


 public void checkTenant(String id) {
        SysEntity sysEntity= sysDao.selectById(id);
        String checkdata = sysEntity.getName().toString() + sysEntity.getCreateTime();//加密的字段
        String checksum = SecureUtil.md5(checkdata + sysEntity.getSalt());
        if (!checksum.equals(sysEntity.getChecksum())) {
              throw new Exception("信息被篡改,请核对后再尝试!");
        }
    }

你可能感兴趣的:(Java,前端,后端,安全)