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

下面是“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注册登录加密实例代码

基础教程推荐