java编程下字符串的16位,32位md5加密实现方法

yizhihongxing

Java编程下字符串的16位、32位MD5加密实现方法

MD5(Message-Digest Algorithm 5)是一种哈希算法,常用于确保文件完整性以及验证数据传输完整性。MD5加密后,得到的结果是一个128位(32个十六进制字符)的字符串,可以选择后16位或者后32位作为加密结果。在Java编程中,我们可以使用Java自带的MessageDigest类,来进行字符串的MD5加密和解密。

实现方法

以下是Java编程下字符串的16位、32位MD5加密实现方法:

1. 16位MD5加密

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

public class MD5Utils {

    public static String encrypt16(String source) {
        return encrypt32(source).substring(8, 24);
    }

    public static String encrypt32(String source) {
        StringBuilder result = new StringBuilder();
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(source.getBytes());
            byte[] bytes = md.digest();
            for (byte b : bytes) {
                String hex = Integer.toHexString(b & 0xff);
                if (hex.length() == 1) {
                    result.append("0");
                }
                result.append(hex);
            }
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return result.toString();
    }

}

2. 32位MD5加密

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

public class MD5Utils {

    public static String encrypt32(String source) {
        StringBuilder result = new StringBuilder();
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(source.getBytes());
            byte[] bytes = md.digest();
            for (byte b : bytes) {
                String hex = Integer.toHexString(b & 0xff);
                if (hex.length() == 1) {
                    result.append("0");
                }
                result.append(hex);
            }
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return result.toString();
    }

}

示例说明

下面是针对以上代码的使用示例:

示例一:16位MD5加密

public class Main {

    public static void main(String[] args) {
        String source = "hello, md5!";
        String encrypt16 = MD5Utils.encrypt16(source);
        System.out.println("source: " + source + ", encrypt16: " + encrypt16);
    }

}

输出结果:

source: hello, md5!, encrypt16: 2a9f1a8dce5080d2

示例二:32位MD5加密

public class Main {

    public static void main(String[] args) {
        String source = "hello, md5!";
        String encrypt32 = MD5Utils.encrypt32(source);
        System.out.println("source: " + source + ", encrypt32: " + encrypt32);
    }

}

输出结果:

source: hello, md5!, encrypt32: c88dceb15553a851a7d1a5c8df6b20e0

总结

以上是Java编程下字符串的16位、32位MD5加密实现方法,可以通过调用相应的方法来实现字符串MD5加密。在实现过程中,主要通过Java自带的MessageDigest类来实现,以及通过转换字节数组和十六进制字符对字符串进行转换。实际开发中,需要根据实际需求选择相应的加密方法,并且需要注意加密结果的长度。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java编程下字符串的16位,32位md5加密实现方法 - Python技术站

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

相关文章

  • 详解Struts2中对未登录jsp页面实现拦截功能

    Struts2框架提供了一种过滤器拦截机制,可以在Action类之前做一些权限控制的处理,例如对未登录的用户拦截访问特定的jsp页面。下面是针对该问题的完整攻略: 步骤一:配置Struts2的过滤器 在web.xml文件中配置Struts2的拦截器: <!–Struts2拦截器配置–> <filter> <filter-na…

    Java 2023年6月15日
    00
  • JavaScript处理解析JSON数据过程详解

    下面是“JavaScript处理解析JSON数据过程详解”的完整攻略。 什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端数据传输。它是纯文本的,可读性较好,易于编写和解析,同时支持多种编程语言。 JSON由于其简洁性、标准化、易读性和跨平台性等优点越来越受到广泛的关注和应用。并且许多现代…

    Java 2023年5月26日
    00
  • java使用dbcp2数据库连接池

    使用dbcp2数据库连接池可以有效地提升Java应用程序与数据库的交互效率。下面是Java使用dbcp2数据库连接池的完整攻略。 步骤一:引入dbcp2依赖 在Java程序中使用dbcp2数据库连接池,需要通过引入dbcp2依赖来实现。可以通过Maven等依赖管理工具,在项目中添加以下依赖: <dependency> <groupId&gt…

    Java 2023年5月19日
    00
  • Java中数字相关的类有哪些?Nuber数字类和Math数学类详解

    前言 我们在解决实际问题时,会经常对数字、日期和系统设置进行处理,比如在我们的代码中,经常会遇到一些数字&数学问题、随机数问题、日期问题和系统设置问题等。 为了解决这些问题,Java给我们提供了多个处理相关问题的类,比如Number类、Math类、Random类、BigInteger类、BigDecimal类、Date类、System类等。 接下来我…

    Java 2023年5月5日
    00
  • 深入讲解Java的对象头与对象组成

    深入讲解Java的对象头与对象组成 在Java中,每个对象都有一个对象头,用来存储对象的元数据信息,同时Java对象也由对象头和实例数据两个部分组成。了解Java对象的组成可以帮助我们更好地理解Java的内存模型。 Java对象的组成 Java对象是由对象头和实例数据两个部分组成的。在64位JVM中,对象头占用16Byte,实例数据大小不定,但至少为8Byt…

    Java 2023年5月26日
    00
  • Java中内存异常StackOverflowError与OutOfMemoryError详解

    Java中内存异常StackOverflowError与OutOfMemoryError详解 StackOverflowError的产生原因及解决方案 StackOverflowError StackOverflowError是由于单个线程或者递归过深,导致函数栈溢出造成的内存溢出异常。当一个方法调用自身方法达到一定次数时会引起StackOverflowEr…

    Java 2023年5月27日
    00
  • java实现Runnable接口适合资源的共享

    在Java中,线程可以通过实现Runnable接口来创建。Runnable接口中定义了一个run()方法,该方法中包含了线程要执行的代码。多个线程可以共享同一个Runnable对象,从而实现资源的共享。 SharedResource类是需要被共享的资源类。下面是一段通过实现Runnable接口来共享SharedResource对象的示例代码: public …

    Java 2023年5月26日
    00
  • 如何使用Java诊断工具?

    使用Java诊断工具可以帮助我们定位Java应用性能和稳定性问题,下面是使用Java诊断工具的攻略与示例说明。 一、准备工作 在使用Java诊断工具之前,需要确保以下条件: 安装Java Development Kit(JDK); 对Java编程语言有一定的基础; 了解如何使用命令行工具。 二、使用Java诊断工具 1. JConsole JConsole是…

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