MD5加密简易登录界面

MD5加密简易登录界面

实现条件

  • maven
  • jdk1.8

第一步

在maven配置中导入依赖

<dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
       <version>2.10.0</version>
</dependency>

第二步

创建实体类

第一个类:

import com.alibaba.fastjson.JSON;

import java.io.*;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Scanner;

public class MD5 {
    static Scanner sc=new Scanner(System.in);
    static ArrayList<user> users =new ArrayList();            //此处的数组模拟一个数据库
    public static void main(String[] args) {
        //界面进入的开始前先将文本中的数据读入数据库(Array List<user> users)中
        try {
            Reader reader=new FileReader("User_INFO.txt");
            String str="";
            int n;
            char [] a=new char[10];
            while (-1!=(n=reader.read(a))){
                str=str.concat(new String(a,0,n));
            }
            reader.close();
            if(str!=""){
            users= (ArrayList<user>) JSON.parseArray(str,user.class);     //通过JSON将字符串解析为java对象
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


        System.out.println("*******************************");
        System.out.println("请选择:1、注册。2、登录。3、退出");
        while (true){
            int num=sc.nextInt();
            if (num==3){
                break;
            }
            switch (num){
                case 1:register(); break;
                case 2:login();break;
            }
        }
    }
    public static String getMD5String(String s){        //将字符串进行MD5加密
        try {
            MessageDigest md =MessageDigest.getInstance("MD5");
            md.update(s.getBytes());
            return  new BigInteger(1,md.digest()).toString(16);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return null;
        }
    }
    public static void register(){
        System.out.println("请输入用户名");
        String name="";
        while(true){
//            sc.nextLine();
            boolean flag=true;
             name=sc.next();
            for (user user : users) {
                if (user.name.equals(name)){
                    System.out.println("\033[31m" + "用户名被占用请重新起名"); //使用彩色字迹提醒
                    System.out.print("\033[30m");
                    System.out.println("请输入用户名");
                    flag=false;
                }
            }
            if (flag){
                break;
            }
        }
        System.out.println("请输入密码:");
        String passWord=sc.next();

        //采用MD5加密存储用户密码,此时存入数据库的密码由于经过加密,即使破解数据库也不可能知道原来密码
        user u=new user(name,getMD5String(passWord));
        users.add(u);
        String ujson= JSON.toJSONString(users);
        try {
            Writer writer=new FileWriter("User_INFO.txt");
            System.out.println(ujson);
            writer.write(ujson);
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("创建成功");
        System.out.println("*******************************");
        System.out.println("请选择:1、注册。2、登录。3、退出");
    }
    public static void login(){
        System.out.println("请输入用户名");
        sc.nextLine();
        String uname=sc.nextLine();
        System.out.println("请输入密码");
        String upwd=sc.nextLine();
        boolean flag=false;
        for (user user : users) {
            if (user.name.equals(uname))
                if (user.passWord.equals(getMD5String(upwd)))
                    //对用户输入的登录密码通过MD5加密  与数据库中的密码进行比较
                    flag=true;
        }
        if (flag){
            System.out.println("登陆成功,请选择以下操作...");
            System.out.println("未完待续....");
        }
        else {
            System.out.println("登录失败,即将返回首页...");
            System.out.println("*******************************");
            System.out.println("请选择:1、注册。2、登录。3、退出");
        }
    }
}

第二个类:


public class user {
    String name;
    String passWord;
    public user(String name, String passWord) {
        this.name = name;
        this.passWord = passWord;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    public String getName() {
        return name;
    }

    public String getPassWord() {
        return passWord;
    }

    @Override
    public String toString() {
        return "user{" +
                "name='" + name + '\'' +
                ", passWord='" + passWord + '\'' +
                '}';
    }
}

程序结构:
在这里插入图片描述

  1. 在进入界面之前 通过json数据格式将XXX.txt中保存的用户信息加载到List集合中。
  2. 进入首界面。
  3. 1 2 3 对应不同的函数。
  4. 登录函数只需要比对List集合中的信息。
  5. 注册函数需要将List集合中的信息重新写入XXX.txt文件中,用来保存数据。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,可以使用以下代码来实现MD5加密和登录注册功能: 1. MD5加密方法: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Utils { public static String encrypt(String input) { try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(input.getBytes()); byte[] digest = md.digest(); StringBuilder sb = new StringBuilder(); for (byte b : digest) { sb.append(String.format("%02x", b & 0xff)); } return sb.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return null; } } } ``` 2. 注册功能: ```java import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Registration { private Map<String, String> users; public Registration() { users = new HashMap<>(); } public void register() { Scanner scanner = new Scanner(System.in); System.out.println("请输入用户名:"); String username = scanner.nextLine(); System.out.println("请输入密码:"); String password = scanner.nextLine(); String encryptedPassword = MD5Utils.encrypt(password); users.put(username, encryptedPassword); System.out.println("注册成功!"); } } ``` 3. 登录功能: ```java import java.util.Map; import java.util.Scanner; public class Login { private Map<String, String> users; public Login(Map<String, String> users) { this.users = users; } public void login() { Scanner scanner = new Scanner(System.in); System.out.println("请输入用户名:"); String username = scanner.nextLine(); System.out.println("请输入密码:"); String password = scanner.nextLine(); String encryptedPassword = MD5Utils.encrypt(password); String storedPassword = users.get(username); if (storedPassword != null && storedPassword.equals(encryptedPassword)) { System.out.println("登录成功!"); } else { System.out.println("用户名或密码错误!"); } } } ``` 使用示例: ```java public class Main { public static void main(String[] args) { Registration registration = new Registration(); Login login = new Login(registration.getUsers()); registration.register(); login.login(); } } ``` 以上代码实现了简单的MD5加密的注册和登录功能。当用户进行注册时,会将密码进行MD5加密后存储;而在登录时,会将用户输入的密码进行MD5加密后与存储的加密密码进行比对。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值