java实现的MD5摘要算法完整实例

yizhihongxing

下面是关于“java实现的MD5摘要算法完整实例”的详细讲解。

什么是MD5摘要算法?

MD5是一种常用的哈希算法,用于为任意长度的数据产生一个固定长度的散列值。因为MD5算法的散列值是固定长度的,所以经常用于检验数据的完整性和安全性。MD5算法的散列结果是一个128位的二进制数,通常用一个32位的16进制数表示。

MD5算法实现步骤

MD5算法的计算过程包含四个步骤:

  1. 填充消息:
    对于消息的末尾,填充比特使其长度减少0至512之间,填充的那个比特为1,其余均为0。然后,填充一个位数为64的长度的比特数,表示消息的原长。如果消息比512位更长,则需要进行多轮哈希计算。

  2. 初始化哈希值(A、B、C、D):
    将16进制的常数初始化为4个缓冲区寄存器,初始化值为:

A = 0x67452301;
B = 0xefcdab89;
C = 0x98badcfe;
D = 0x10325476;
  1. 处理消息:
    对于每一个512位的消息块,计算下面的哈希值:
MD5(A,B,C,D,X,K,s) = rotate_left((A + F(B,C,D) + X + K), s) + B

其中,F(B,C,D)是一个基本的MD5常数:

F(B, C, D) = (B & C) | (~B & D)
G(B, C, D) = (B & D) | (C & ~D)
H(B, C, D) = B ^ C ^ D
I(B, C, D) = C ^ (B | ~D)

并且,K是一个常量数,每个消息分配一个值:

for (int i = 1; i <= 64; i++) {
    K[i] = floor(2^32 * abs(sin(i)))
}

s表示左移的位数。

  1. 输出哈希值:
    最后得到的哈希值依次是ABCD部分的结果之和,即:
MD5(M) = A + B + C + D

Java实现MD5算法的完整示例

下面是Java语言实现MD5算法的代码示例,供参考:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Util {
    /**
     * 对字符串进行MD5加密
     * @param source 要加密的字符串
     * @return 加密后的字符串
     */
    public static String md5(String source) {
        StringBuilder sb = new StringBuilder();
        try {
            MessageDigest md5 = MessageDigest.getInstance("md5");
            md5.update(source.getBytes());
            byte[] bytes = md5.digest();
            for (byte b : bytes) {
                String hex = Integer.toHexString(b & 0xff);
                if (hex.length() == 1) {
                    sb.append("0");
                }
                sb.append(hex);
            }
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return null;
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        String s1 = "hello world";
        String s2 = "123456";
        System.out.println("s1 MD5结果为:" + md5(s1));
        System.out.println("s2 MD5结果为:" + md5(s2));
    }
}

这里我们定义了静态方法md5来实现字符串的MD5加密,加密算法就是用上文提到的4个步骤。我们也提供了两个示例,对字符串"hello world"和"123456"进行加密,得到了结果分别为:

s1 MD5结果为:5eb63bbbe01eeed093cb22bb8f5acdc3
s2 MD5结果为:e10adc3949ba59abbe56e057f20f883e

可以看到,它们都是32位的16进制字符串。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现的MD5摘要算法完整实例 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 解决spring boot hibernate 懒加载的问题

    下面是“解决spring boot hibernate 懒加载的问题”的完整攻略。 1. 问题描述 在使用 Spring Boot 和 Hibernate 进行开发时,我们可能会遇到“懒加载”的问题。简单来说,当我们对一个已经持久化到数据库中的对象进行查询时,Hibernate 默认情况下是不会立即从关联对象中获取数据的,而是在真正需要使用数据的时候才会从数…

    Java 2023年5月20日
    00
  • 详解Spring依赖注入的三种方式使用及优缺点

    以下是详解Spring依赖注入的三种方式使用及优缺点的完整攻略: 1. Spring依赖注入的三种方式 Spring提供了三种方式来实现依赖注入: 1.1 构造器注入 构造器注入是在对象创建的时候使用构造函数来进行注入。在XML配置文件中,我们可以使用标签对构造函数中需要的参数进行赋值。使用构造器注入的优点是在对象创建时就可以将所有的依赖注入,避免了后期在运…

    Java 2023年5月19日
    00
  • 基于Java中进制的转换函数详解

    基于Java中进制的转换函数详解 什么是进制? 进制是数学中一种表示数值大小的方法,常见的进制有10进制、2进制、16进制等。 在计算机科学中,2进制是最常用的进制,因为计算机仅能识别0和1,而所有的数值、字符、图片等都可以用二进制表示。 Java中进制转换函数 Java中提供了许多用于进制转换的函数,如下:- Integer.parseInt(String…

    Java 2023年5月26日
    00
  • Tomcat服务器搭建教程

    Tomcat服务器搭建教程 安装JDK Tomcat服务器需要Java环境支持,因此需要先安装Java Development Kit (JDK)。 访问Oracle官方网站下载页面,选择合适的JDK版本下载。 安装JDK,设置环境变量。 下载Tomcat 访问Apache官网的下载页面,选择最新的稳定版本下载。 解压下载文件至目标文件夹。 配置Tomcat…

    Java 2023年5月19日
    00
  • Tomcat集群和Session复制应用介绍

    Tomcat集群和Session复制应用介绍 什么是Tomcat集群 Tomcat集群是将多个Tomcat服务器组成一个集群,通过负载均衡算法来实现请求的分发和处理。其优点在于提高应用的可靠性、提高应用的性能、可以动态扩展集群规模等。 Tomcat集群的实现方式 AJP协议连接多个Tomcat服务器,实现负载均衡和Session复制。 使用第三方的负载均衡器…

    Java 2023年5月19日
    00
  • JAVA如何获取客户端IP地址和MAC地址

    获取客户端IP地址和MAC地址是Java开发中经常用到的技巧,下面将详细介绍如何实现。 获取客户端IP地址 在Java中获取客户端IP地址需要先获取请求头中的IP地址,然后通过这个IP地址去判断客户端具体的位置。以下是获取IP地址的代码: // 获取HttpServletRequest对象 HttpServletRequest request = (Http…

    Java 2023年5月26日
    00
  • 浅谈springmvc的DispatcherServlet分析

    浅谈SpringMVC的DispatcherServlet分析 SpringMVC是一种基于MVC模式的Web框架,它可以帮助我们快速开发Web应用程序。在SpringMVC中,DispatcherServlet是一个核心组件,它负责接收所有的HTTP请求,并将请求分发给相应的处理器。本文将详细讲解SpringMVC的DispatcherServlet,并提…

    Java 2023年5月17日
    00
  • 命令行编译java文件方式

    命令行编译 Java 文件是使用 Java 命令编译器进行编译的一种方式。下面我们详细讲解一下如何使用命令行编译 Java 文件。 1. 确认 Java 环境 首先,我们要确认 Java 运行环境已经正确安装在计算机上。打开命令行工具,输入以下命令: java -version 如果能够看到与以下类似的输出,则说明 Java 环境已经安装成功: java v…

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