【Java】+MD5生成

亲测可用

复制代码
 1 package com.alipay.ipay.gn.commontool;
 2 
 3 import org.testng.annotations.Test;
 4 
 5 import java.math.BigInteger;
 6 import java.security.MessageDigest;
 7 import java.security.NoSuchAlgorithmException;
 8 
 9 /**
10  * @author 
11  * @version 1.0
12  * @time 2019/12/23 12:44
13  */
14 public class MyMd5 {
15 
16     /**
17      * 功能:获取指定字符串的MD5值
18      *
19      * @param plainText    原字符串内容
20      * @param returnLength 生成MD5值后 要返回的长度
21      * @return
22      */
23     static String getMd5(String plainText, int returnLength) {
24         //定义一个字节数组
25         byte[] secretBytes = null;
26         try {
27             // 生成一个MD5加密计算摘要
28             MessageDigest md = MessageDigest.getInstance("MD5");
29             //对字符串进行加密
30             md.update(plainText.getBytes());
31             //获得加密后的数据
32             secretBytes = md.digest();
33         } catch (NoSuchAlgorithmException e) {
34             throw new RuntimeException("没有md5这个算法!");
35         }
36         //将加密后的数据转换为16进制数字
37         String md5code = new BigInteger(1, secretBytes).toString(16);
38         // 如果生成数字未满32位,需要前面补0
39         for (int i = 0; i < 32 - md5code.length(); i++) {
40             md5code = "0" + md5code;
41         }
42         // 返回指定长度
43         if (returnLength > 0 && returnLength <= 32) {
44             md5code = md5code.substring(0, returnLength);
45         }
46         return md5code;
47     }
48 
49     @Test
50     public void testGetMd5() {
51         System.out.println(getMd5("1214545@437498247hdfkjsdhfkj发生口角的回复可视角度和罚款决定书", 4));// 43b0
52     }
53 }
复制代码

posted @   淡怀  阅读(1411)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示