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日

相关文章

  • 在spring boot中使用java线程池ExecutorService的讲解

    下面就详细讲解一下“在springboot中使用java线程池ExecutorService”的完整攻略。 1. 概述 在应用程序中,我们通常需要进行一些异步的操作,例如发送邮件、短信通知等,这些操作不应该阻塞主线程的执行。Java中提供了线程池ExecutorService来帮助我们完成这些异步操作,它能够维护一定数量的线程来处理任务,避免了每次需要处理任…

    Java 2023年5月15日
    00
  • Java 从json提取数组并转换为list的操作方法

    下面是 “Java 从json提取数组并转化为list的操作方法” 的完整攻略: 1. 需要的依赖 在 Java 中使用 JSON 数据,我们需要导入相应的 JSON 解析库,这里我们以 JSON-java 为例。 在 Maven 项目中添加以下依赖即可: <dependency> <groupId>org.json</grou…

    Java 2023年5月26日
    00
  • MyBatis-plus+达梦数据库实现自动生成代码的示例

    接下来我将详细讲解如何使用MyBatis-plus和达梦数据库实现自动生成代码的步骤和注意事项。 环境准备 JDK 1.8及以上版本 Maven 3.5及以上版本 Spring Boot 2.x及以上版本 MyBatis-plus 3.x及以上版本 达梦数据库 JDBC 驱动程序 步骤一:添加依赖 首先,在使用 MyBatis-plus 时,需要添加相应的依…

    Java 2023年5月20日
    00
  • Java最简单的DES加密算法实现案例

    Java最简单的DES加密算法实现案例的攻略如下: 1. 什么是DES加密算法 DES加密算法是一种对称加密算法,全称为Data Encryption Standard,即数据加密标准。它是一种比较古老的加密算法,在现代加密算法中已经被更加安全和高效的加密算法所取代。但是,由于DES算法曾经是加密界最流行的算法之一,因此它仍然值得我们学习。 2. 实现步骤 …

    Java 2023年5月19日
    00
  • 解析Java中的Field类和Method类

    解析Java中的Field类和Method类攻略 什么是Field类和Method类 Field类和Method类都是Java反射的重要组成部分。Field类代表一个类或者接口的属性(成员变量),Method类代表一个类或者接口中的方法。 使用这两个类可以在运行时获取并操作类或接口中的属性和方法信息。 如何使用Field类 在Java中,每个类都有它的属性(…

    Java 2023年5月26日
    00
  • java的Guava工具包介绍

    Java的Guava工具包介绍 Guava 是什么? Guava是由谷歌(Google)发布的Java核心库的扩展,可以方便Java程序员编写更简洁、更易于维护的代码。Guava提供了很多常用的工具类和方法,例如字符串处理、集合操作、并发、IO以及基本类型等工具类。 Guava 的优点 Guava的主要优点如下: 提供了现成的API,可以帮助开发人员更快速地…

    Java 2023年5月20日
    00
  • Spring Boot整合MyBatis操作过程

    下面我来详细讲解“Spring Boot整合MyBatis操作过程”的完整攻略,目录如下: 环境准备 创建Maven工程 引入依赖 配置数据源 创建MyBatis映射文件 创建Mapper接口 创建Service和Controller 启动应用程序 示例1:查询全部用户信息 示例2:根据用户名查询用户信息 总结 1. 环境准备 首先需要准备好以下环境:- J…

    Java 2023年5月19日
    00
  • Mybatis对mapper的加载流程深入讲解

    下面是对”Mybatis对mapper的加载流程深入讲解”的详细讲解: 1、Mybatis mapper的概念 Mapper是Mybatis的一个核心概念,是连接Mybatis和JDBC的重要桥梁。Mybatis将SQL语句和映射规则分离出来,提供了mapper对SQL语句的注解和XML配置文件的支持,使得我们可以在mapper中定义SQL和对应的Java映…

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