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

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日

相关文章

  • Java SimpleDateFormat线程安全问题原理详解

    Java SimpleDateFormat线程安全问题原理详解 简介 SimpleDateFormat 是 Java 中处理日期格式化的常用类,常用来将 Date 类型转换成特定格式的字符串。然而,SimpleDateFormat 是非线程安全的,当多个线程同时访问同一个 SimpleDateFormat 实例时,就会出现线程安全问题。本文将通过分析 Sim…

    Java 2023年6月1日
    00
  • 如何使用Java Agent?

    以下是使用Java Agent的完整使用攻略: 什么是Java Agent? Java Agent是JVM的一个重要功能,可以在运行时修改代码行为。Java Agent可以利用JVM提供的Java Instrumentation API,拦截和转换字节码,以实现代码注入、性能优化、运行时监控等功能。 如何使用Java Agent? 以下是使用Java Age…

    Java 2023年5月11日
    00
  • Java String类详解_动力节点Java学院整理

    Java String类详解 在Java中,String类是一个非常重要的类。本篇文章将对Java String类进行详细的讲解,包括String类的定义、String类的常用方法、String类与其他数据类型的转换以及String类的不可变性等。 String类的定义 在Java中,String类是一个表示字符串的类。每个字符串都是由多个字符组成的字符序列…

    Java 2023年5月26日
    00
  • springboot 使用 minio的示例代码

    下面是详细的攻略过程。 使用 Minio 存储文件 Minio是一个分布式对象存储服务,除了能提供文件存储、数据备份和归档之外,还能快速实现容量扩展。 使用 Minio 前需要先创建一个存储桶。 val minioEndpoint: String val minioAccessKey: String val minioSecretKey: String va…

    Java 2023年5月20日
    00
  • Java实现的简单音乐播放器功能示例

    下面我将为你讲解“Java实现的简单音乐播放器功能示例”的完整攻略。 需求分析 在实现一个音乐播放器之前,首先要明确该播放器需要实现哪些功能。可以列出以下需求: 能够载入音乐文件并播放。 能够停止、暂停播放。 提供音量调节功能。 提供进度调节功能。 能够显示正在播放的音乐文件名和剩余时间。 能够自动切换下一首歌曲。 实现步骤 创建一个主窗口,并添加播放器控制…

    Java 2023年5月19日
    00
  • Java实现FTP上传与下载功能

    下面是Java实现FTP上传与下载功能的完整攻略: 1. 准备环境 在进行FTP上传与下载之前,需要准备以下环境: Java运行环境 FTP服务器 FTP登录账号和密码 2. 引入FTP客户端库 Java提供了FTP客户端库供我们使用,常见的有Apache commons-net和Spring FTP等,这里我们以Apache commons-net为例。在…

    Java 2023年5月20日
    00
  • Java中的8大基本数据类型详解

    Java中的8大基本数据类型详解 在Java中,8大基本数据类型指的是boolean、byte、char、short、int、long、float、double这8种数据类型。它们是Java的基础数据类型,在Java程序中经常被用到。 boolean类型 boolean类型用于存储真假值,取值只有两种:true和false。在Java中,布尔类型的默认值是f…

    Java 2023年5月26日
    00
  • java中如何获取时间戳的方法实例

    获取时间戳可以使用Java中的两种方式:System.currentTimeMillis()和Instant.now().toEpochMilli()。 System.currentTimeMillis()方法实例 System.currentTimeMillis()方法返回当前时间戳(以毫秒为单位)。 示例代码: long timestamp = Syst…

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