java开发之MD5加密算法的实现

Java开发之MD5加密算法的实现

简介

MD5是一种常用的加密算法,Java中可以通过MessageDigest类实现MD5加密。本攻略将介绍如何在Java中使用MessageDigest类实现MD5加密。

实现过程

1. 获取MessageDigest对象

使用MessageDigest类的getInstance方法获取MessageDigest对象,并指定算法为MD5。

MessageDigest md = MessageDigest.getInstance("MD5");

2. 添加待加密数据并计算摘要

使用MessageDigest对象的update方法,向待加密数据添加内容。最终使用digest方法计算摘要。

md.update(plaintext.getBytes());
byte[] digest = md.digest();

3. 将摘要转换为十六进制字符串

可以使用Java自带的BigInteger类将摘要转换为十六进制字符串。

String encodedText = new BigInteger(1, digest).toString(16);

完整的MD5加密函数实现如下:

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

public class MD5Util {

    public static String md5(String plaintext) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(plaintext.getBytes());
            byte[] digest = md.digest();
            String encodedText = new BigInteger(1, digest).toString(16);
            while (encodedText.length() < 32) {
                encodedText = "0" + encodedText;
            }
            return encodedText;
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return "";
        }
    }
}

示例

示例1:对字符串进行MD5加密

String plaintext = "Hello, world!";
String encodedText = MD5Util.md5(plaintext);
System.out.println(encodedText);

输出结果:

3e25960a79dbc69b674cd4ec67a72c62

示例2:对文件进行MD5加密

import java.io.FileInputStream;
import java.security.MessageDigest;

public class FileMD5 {

    public static void main(String[] args) throws Exception {
        String filename = "test.txt";
        MessageDigest md = MessageDigest.getInstance("MD5");
        FileInputStream fis = new FileInputStream(filename);
        byte[] buffer = new byte[8192];
        int len;
        while ((len = fis.read(buffer)) != -1) {
            md.update(buffer, 0, len);
        }
        fis.close();
        byte[] digest = md.digest();
        String encodedText = new BigInteger(1, digest).toString(16);
        while (encodedText.length() < 32) {
            encodedText = "0" + encodedText;
        }
        System.out.println(encodedText);
    }
}

在示例2中,我们通过FileInputStream读取文件内容,并使用MessageDigest类计算文件的MD5摘要,最终输出十六进制字符串。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java开发之MD5加密算法的实现 - Python技术站

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

相关文章

  • springmvc使用JSR-303进行数据校验实例

    以下是完整的“springmvc使用JSR-303进行数据校验实例”的攻略: 概述 在Web应用程序中,数据校验是至关重要的,因为它可以确保用户输入的数据是有效且符合预期的。在Java中,我们可以使用JSR-303规范来实现数据校验。而在Spring框架中,我们可以使用Spring MVC的数据校验功能,将JSR-303规范集成到我们的应用程序中。本文将介绍…

    Java 2023年6月16日
    00
  • Spring Boot整合持久层之JdbcTemplate多数据源

    来给您讲解一下关于“Spring Boot整合持久层之JdbcTemplate多数据源”的完整攻略。 一、什么是JdbcTemplate多数据源 在使用Spring Boot进行开发时,我们通常会涉及到多个数据库的操作,在这种情况下,我们就需要使用到JdbcTemplate来进行多数据源的操作。JdbcTemplate是一个Spring的JDBC封装类,使用…

    Java 2023年5月20日
    00
  • 使用maven生成可执行的jar包的方法

    生成可执行的jar包是Maven的一个非常重要的功能, 可以将所有依赖打包成一个jar文件,方便部署和分发应用程序。下面是使用Maven生成可执行的jar包的步骤: 步骤1:创建Maven项目 首先我们需要创建一个Maven项目,并在pom.xml文件中添加插件来生成可执行的jar包。 步骤2:设置Maven插件 在pom.xml文件中添加如下配置,以使用M…

    Java 2023年5月20日
    00
  • Java-SpringBoot-Range请求头设置实现视频分段传输

    老实说,人太懒了,现在基本都不喜欢写笔记了,但是网上有关Range请求头的文章都太水了下面是抄的一段StackOverflow的代码…自己大修改过的,写的注释挺全的,应该直接看得懂,就不解释了写的不好…只是希望能给视频网站开发的新手一点点帮助吧. 业务场景:视频分段传输、视频多段传输(理论上配合前端能实现视频预览功能, 没有尝试过)下面是API测试图…

    Java 2023年4月19日
    00
  • Java后端对接微信支付(小程序、APP、PC端扫码)包含查单退款

    Java后端对接微信支付攻略 1. 准备工作 在开始对接微信支付之前,我们需要准备一些材料: 商户号(mchId)和商户的API密钥(apiKey),在微信支付商户平台中获取。 在微信支付平台中创建支付应用,获取应用ID(appId)和应用密钥(appSecret)。 2. 配置微信支付参数 在项目中添加微信支付相关的配置,这个配置需要存储在项目的配置文件中…

    Java 2023年5月23日
    00
  • Spring Boot异步线程间数据传递的四种方式

    下面让我来详细解释一下Spring Boot异步线程间数据传递的四种方式。 1. 使用CompletableFuture CompletableFuture是Java8中推出的异步编程API,可以很好的处理异步任务,同时也提供了一些方法来实现线程间的数据传递。 使用CompletableFuture来传递数据,主要有以下两个方法: CompletableFu…

    Java 2023年5月26日
    00
  • java实现的AES秘钥生成算法示例

    下面我将为你详细讲解使用Java实现AES秘钥生成算法的完整攻略。 1. 算法概述 AES全称为Advanced Encryption Standard,是一种常见的对称加密算法。在使用AES算法加密信息之前,需要先通过AES秘钥生成算法来生成AES秘钥,然后再使用该秘钥进行加密。AES秘钥生成算法通常采用随机数生成算法来生成不可预测的AES秘钥。 在Jav…

    Java 2023年5月19日
    00
  • Java 如何解析key为动态的json操作

    使用JsonNode解析动态key的Json 使用Jackson库中的JsonNode对象可以在解析动态key的Json时非常有用。JsonNode对象可以类比Java的DOM节点进行操作从而解析Json。可以像以下这样使用JsonNode解析动态key的Json: String jsonString = "{\"key1\":…

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