JAVA简单实现MD5注册登录加密实例代码

下面是“JAVA简单实现MD5注册登录加密实例代码”的攻略:

1. MD5简介

MD5,全称为Message-Digest Algorithm 5,是一种常用的密码散列函数,可以将任意长度的信息(不限于字符串)映射为一个128位(16字节)的哈希值。通常用于数据完整性校验和密码存储等场合。

2. MD5加密步骤概述

MD5算法分为4步:

  • 填充数据
  • 初始化状态变量
  • 处理分组数据
  • 输出结果

3. JAVA实现MD5加密

Java通过java.security.MessageDigest类和java.util.Base64类提供了MD5算法实现。

下面是基于Java提供的MessageDigest实现的MD5加密示例代码:

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Utils {
    /**
     * Encode string using MD5 algorithm
     *
     * @param input
     * @return MD5 hash
     * @throws NoSuchAlgorithmException
     */
    public static String md5(String input) throws NoSuchAlgorithmException {
        MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] messageDigest = md.digest(input.getBytes());
        BigInteger number = new BigInteger(1, messageDigest);
        String md5 = number.toString(16);

        while (md5.length() < 32) {
            md5 = "0" + md5;
        }

        return md5;
    }
}

4. 注册登录加密实例代码

下面是一个用Java实现的基于MD5的注册登录加密实例代码:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Scanner;

public class User {

    private static final String SALT = "MySalt";

    private String username;
    private String password;

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public boolean authenticate(String password) throws NoSuchAlgorithmException {
        return this.password.equals(MD5(password + SALT));
    }

    private String MD5(String input) throws NoSuchAlgorithmException {
        MessageDigest md = MessageDigest.getInstance("MD5");

        md.update(input.getBytes());

        byte[] digest = md.digest();

        StringBuilder sb = new StringBuilder();

        for (byte b : digest) {
            sb.append(Integer.toHexString((b & 0xff) | 0x100).substring(1));
        }

        return sb.toString();

    }

    public static void main(String[] args) throws NoSuchAlgorithmException {

        Scanner sc = new Scanner(System.in);
        System.out.println("Enter your username:");
        String username = sc.nextLine();

        System.out.println("Enter your password:");
        String password = sc.nextLine();

        String hashedPassword = MD5(password + SALT);

        User user = new User(username, hashedPassword);

        System.out.println("Login to your account:");

        System.out.println("Enter your password:");

        boolean isAuthenticated = user.authenticate(sc.nextLine());

        if (isAuthenticated) {
            System.out.println("Welcome, " + user.username + "!");
        } else {
            System.out.println("Login failed!");
        }
    }
}

在这个示例代码中,我们通过定义一个User类来实现注册和登录,以及密码的加密和比对。在密码加密时,我们使用固定的SALT值对用户密码进行加盐,然后再通过MD5算法进行加密处理。在比对用户密码时,我们通过User类的authenticate()方法来验证用户密码是否正确。

5. 参考资料

  • Message-Digest Algorithm 5 (MD5), https://en.wikipedia.org/wiki/MD5
  • Java MessageDigest API documentation, https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/security/MessageDigest.html
  • Java Base64 API documentation, https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Base64.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JAVA简单实现MD5注册登录加密实例代码 - Python技术站

(1)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • SpringSecurity报错authenticationManager must be spec的解决

    针对Spring Security报错authenticationManager must be specified 的解决方案,一般来说可以从以下两方面入手: 1.在Spring Security配置文件中指定authenticationManager;2.在Spring Boot项目中添加配置类来注入authenticationManager。 1.指定…

    Java 2023年5月20日
    00
  • Java使用动态规划算法思想解决背包问题

    Java 使用动态规划算法思想解决背包问题 什么是动态规划算法 动态规划(Dynamic Programming)是一种解决多阶段决策问题的优化方法。它将问题分解为多个阶段,并针对每个阶段进行决策。每个阶段的决策将会影响后续的阶段,因此需要对每个阶段进行全局最优化的考虑,以确保最终的结果是最优的。 背包问题 背包问题(Knapsack Problem)是常见…

    Java 2023年5月19日
    00
  • springboot入门之profile设置方式

    下面我来详细讲解“springboot入门之profile设置方式”的完整攻略。 一、什么是profile 在Spring Boot项目中,profile是一种方便在不同环境中运行应用程序的方式。可以通过定义不同的配置文件来区分不同的环境,比如开发环境、测试环境、生产环境等等。 二、profile的配置方式 Spring Boot提供了多种配置profile…

    Java 2023年5月19日
    00
  • JSP errorPage设置方法

    当在JSP页面中发生错误的时候,可以通过errorPage设置指定的错误页面来处理异常,下面是JSP errorPage设置方法的完整攻略。 1. errorPage设置方法介绍 在JSP页面中设置错误页面有两种方式,分别是: 通过page指令设置errorPage属性; 在web.xml文件中配置<error-page>元素。 1.1 通过pa…

    Java 2023年6月15日
    00
  • Java中的Web MVC简介_动力节点Java学院整理

    Java中的Web MVC简介 Web MVC 是一种基于模型-视图-控制器(MVC)模式的 Web 应用程序开发框架。在 Java 中,我们可以使用多种 Web MVC 框架,例如 Spring MVC、Struts2 等。本文将详细讲解 Java 中的 Web MVC,包括 MVC 模式的基本概念、Web MVC 框架的基本原理、Spring MVC 的…

    Java 2023年5月18日
    00
  • Springboot详解底层启动过程

    Spring Boot 底层启动过程 Spring Boot 启动过程分为两个阶段:Spring 应用上下文准备阶段和 Spring 应用上下文装载阶段。 Spring 应用上下文准备阶段 1. 加载 SpringApplication Spring Boot 应用程序从 entry point 开始执行。通常情况下,入口点是使用 SpringApplica…

    Java 2023年5月15日
    00
  • Maven setting.xml配置文件详解

    下面是Maven setting.xml配置文件详解的完整攻略。 什么是Maven的setting.xml配置文件? Maven的setting.xml配置文件是Maven构建系统的配置文件之一,它可以对Maven构建过程中的各种参数进行设置,比如Maven的本地仓库路径、代理服务器地址、编译插件、发布仓库等等。设置这些参数可以让我们的Maven构建过程更加…

    Java 2023年5月19日
    00
  • Java SpringBoot整合SpringCloud

    Spring Boot和Spring Cloud是两个非常流行的Java框架,它们可以帮助开发者快速构建分布式应用程序。在本攻略中,我们将详细介绍如何将Spring Boot和Spring Cloud整合在一起,并提供两个示例来说明其用法。 以下是两个示例,介绍如何将Spring Boot和Spring Cloud整合在一起: 示例一:使用Spring Cl…

    Java 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部