项目搭建、两次MD5加密

本文档详细介绍了如何使用Spring模板创建项目,添加thymeleaf、spring web等依赖,创建数据库和用户表,并实现了MD5的两次加密策略,确保密码安全。在前端对密码进行MD5加密后,服务端再加盐值加密存储,增强了密码保护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建项目,实用spring模板创建

在这里插入图片描述
在这里插入图片描述

添加四个依赖:thymeleaf、spring web、lombok、MySQL driver,还需要mybatis plus依赖,在mybatisplus官网复制

在这里插入图片描述

删掉没用的目录和文件

在这里插入图片描述

<!--        mybatis plus-->
<!--        需要更新lombok plugin,不然报错-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.1</version>
        </dependency>

<!--        mysql组件-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
<!--        lombok组件-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
<!--        test组件-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

写配置文件

server:
  port: 8014

spring:
  thymeleaf:
    cache: false

  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc.mysql://localhost:3306/seckill?useUnicode=true&characterEncodeing=UTF-8&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    hikari:
      pool-name: DateHikariCP
      minimum-idle: 5
      idle-timeout: 1800000
      maximum-pool-size: 10
      auto-commit: true
      max-lifetime: 1800000
      connection-timeout: 30000
      connection-test-query: SELECT 1

mybatis-plus:
  mapper-locations: classpath*:/mapper/*Mapper.xml
  type-aliases-package: com.deng.seckill.pojo

logging:
  level:
    com.deng.seckill.mapper: debug

写Controller.java文件测试,HTML中写入thymeleaf命名空间

在这里插入图片描述

<!DOCTYPE html>
<html lang="en"
      xmlns:th="http://www.thymeleaf.org">
<!--不能有空格,thymeleaf命名空间-->

<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>
<p th:text="'hello'+${name}"></p>

</body>
</html>

Controller.java中model.addAttribute()传的参数通过thymeleaf进行获取

Navicat新建数据库和用户表

在这里插入图片描述
这里创建表的时候,不需要加单引号
在这里插入图片描述

MD5加密

第一次 (在前端加密,客户端):防止用户的密码在网络中通过明文的形式传输
第二次:在服务端再次加密,当获取到前端发送来的密码后。通过MD5(密码+随机盐值)再次生成密码后存入数据库。防止数据库被盗的情况下,通过md5反查,查获用户密码。

在pom中加入MD5依赖

<!--        MD5依赖-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.6</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
        </dependency>

在utils包中添加MD5工具类

package com.deng.seckill.utils;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.stereotype.Component;
/**
 * MD5工具类
 *
 * @author dengzhan
 */
@Component
public class MD5Util {
    public static String md5(String src) {
        return DigestUtils.md5Hex(src);
    }

    //准备好salt
    private static final String salt = "1a2b3c4d";

    //输入密码转后端接收密码,第一次MD5加密
    public static String inputPassToFormPass(String inputPass) {
        String str = ""+salt.charAt(0)+salt.charAt(2) + inputPass
                +salt.charAt(5) + salt.charAt(4);
        return md5(str);
    }

    //后端密码到数据库 需要参数salt,才能倒推用户输入的密码
    public static String formPassToDBPass(String formPass, String salt) {
        String str = ""+salt.charAt(0)+salt.charAt(2) + formPass +salt.charAt(5)
                + salt.charAt(4);
        return md5(str);
    }

    //真正调用的方法,从前端到数据库
    public static String inputPassToDbPass(String inputPass, String saltDB) {
        String formPass = inputPassToFormPass(inputPass);
        String dbPass = formPassToDBPass(formPass, saltDB);
        return dbPass;
    }
    public static void main(String[] args) {
        System.out.println(inputPassToFormPass("123456"));//d3b1294a61a07da9b49b6e22b2cbd7f9
        System.out.println(formPassToDBPass(inputPassToFormPass("123456"),
                "1a2b3c4d"));
        System.out.println(inputPassToDbPass("123456", "1a2b3c4d"));
    }
}
d3b1294a61a07da9b49b6e22b2cbd7f9
b7797cce01b4b131b433b6acf4add449
b7797cce01b4b131b433b6acf4add449
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值