美文网首页Spring boot
设计登陆表, 两次MD5加密

设计登陆表, 两次MD5加密

作者: 匆匆岁月 | 来源:发表于2018-08-21 17:30 被阅读468次

1、数据库设计

2、明文密码两次MD5处理

http在网络中是通过明文来进行传输的,如果用户登陆时输入的用户名和密码不做处理。那么如果数据包对别人截取到了,就能过得到数据包中的明文密码。

两次MD5:

第一次加密: 将用户输入的明文密码加上固定Salt 之后进行MD5加密,然后在网络中进行传输。当传输到达服务器端的时候,进行第二次加密。

用户端: PASS = MD5(明文 + 固定Salt)

第二次加密:第一次加密后的密文和一个随机Salt结合之后,再进行一次MD5加密(这是为了防止数据库被盗,如果只进行一次MD5加密的话,可以通过反查表的方式推算出明文密码)。

服务端: PASS = MD5(用户输入 + 随机Salt)

首先,需要在pom.xml中引入MD5相关的依赖:

<dependency>
  <groupId>commons-codec</groupId>
  <artifactId>commons-codec</artifactId>
</dependency>
<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-lang3</artifactId>
  <version>3.6</version>
</dependency>

然后,新建包 com...util,在这个包下面新建类 MD5Util.java:

package com.*.*.util;

import org.apache.commons.codec.digest.DigestUtils;

public class MD5Util {
    
    public static String md5(String src) {
        return DigestUtils.md5Hex(src);
    }
    
    private static final String salt = "1a2b3c4d";
    
    public static String inputPassToFormPass(String inputPass) {
        String str = ""+salt.charAt(0)+salt.charAt(2) + inputPass +salt.charAt(5) + salt.charAt(4);
        System.out.println(str);
        return md5(str);
    }
    
    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"));//b7797cce01b4b131b433b6acf4add449
    }
    
}

相关文章

  • 设计登陆表, 两次MD5加密

    1、数据库设计 2、明文密码两次MD5处理 http在网络中是通过明文来进行传输的,如果用户登陆时输入的用户名和密...

  • MD5 + salt

    MD5加密的数据泄露出去依然可以被破解(反查彩虹表)。 两次MD5 用户端:PASS = MD5(明文+固定sal...

  • 用mysql实现登录注册功能

    1、创建用户表 表结构如下idunameupwdisdelete注意:需要对密码进行加密。如果使用md5加密,则密...

  • iOS常见信息加密方式总结

    目录 MD5加密HMAC加密base64加密对称加密RSA加密 - 非对称加密 一.MD5加密 MD5加密是最常用...

  • iOS 数据加密

    iOS 常用加密方式算法包括MD5加密、AES加密、BASE64加密 MD5加密 MD5:全称是Message D...

  • iOS加密

    iOS代码常见的加密方式包括MD5加密、AES加密、BASE64加密,RSA加密。 MD5加密 MD5是不可逆的只...

  • PHPCMS V9 加密规则

    相关表:v9_member 加密方式: md5(md5(password)+encrypt) 第一步:对输入的密码...

  • 飞卢小说app 加密分析

    飞卢小说登录密码加密分析,分两次md5加密:第一次加密:EW234@![#$&]*{,OP}Kd^w349Op+-...

  • Java加密

    MD5加密: RSA加密: CBC加密:

  • SSM框架下Shiro免密登录

    在做微信授权登陆的时候,由于使用shiro框架进行认证登陆,没有认证授权无法建立会话。数据库中的密码经过md5加密...

网友评论

    本文标题:设计登陆表, 两次MD5加密

    本文链接:https://www.haomeiwen.com/subject/ewzdiftx.html