• Java中的MD5加密算法完整版Java中的MD5加密算法完整版


    在进行Java软件开发过程中,难免会对一些数据进行加密,因此Java中提供了自带的MessageDigest实现对文本的加密算法,下面是一个对文本进行加密的MD5加密工具类代码示例:

     1 package org.4spaces;
     2  
     3  
     4 import org.apache.commons.lang3.StringUtils;
     5  
     6 import java.security.MessageDigest;
     7 import java.security.NoSuchAlgorithmException;
     8  
     9 /**
    10  * 功能:MD5加密工具类
    11  * 说明:转载请注明:四个空格---https://www.4spaces.org
    12  */
    13 public class MD5Util {
    14     /**
    15      * 1.对文本进行32位小写MD5加密
    16      * @param plainText 要进行加密的文本
    17      * @return 加密后的内容
    18      */
    19     public static String textToMD5L32(String plainText){
    20         String result = null;
    21         //首先判断是否为空
    22         if(StringUtils.isBlank(plainText)){
    23             return null;
    24         }
    25         try{
    26             //首先进行实例化和初始化
    27             MessageDigest md = MessageDigest.getInstance("MD5");
    28             //得到一个操作系统默认的字节编码格式的字节数组
    29             byte[] btInput = plainText.getBytes();
    30             //对得到的字节数组进行处理
    31             md.update(btInput);
    32             //进行哈希计算并返回结果
    33             byte[] btResult = md.digest();
    34             //进行哈希计算后得到的数据的长度
    35             StringBuffer sb = new StringBuffer();
    36             for(byte b : btResult){
    37                 int bt = b&0xff;
    38                 if(bt<16){
    39                     sb.append(0);
    40                 }
    41                 sb.append(Integer.toHexString(bt));
    42             }
    43             result = sb.toString();
    44         }catch(NoSuchAlgorithmException e){
    45             e.printStackTrace();
    46         }
    47         return result;
    48     }
    49  
    50     /**
    51      * 2.对文本进行32位MD5大写加密
    52      * @param plainText 要进行加密的文本
    53      * @return 加密后的内容
    54      */
    55     public static String textToMD5U32(String plainText){
    56         if(StringUtils.isBlank(plainText)){
    57             return null;
    58         }
    59         String result = textToMD5L32(plainText);
    60         return result.toUpperCase();
    61     }
    62  
    63     /**
    64      * 3.对文本进行16位MD5小写加密
    65      * @param plainText 需要进行加密的文本
    66      */
    67     public static String textToMD5L16(String plainText){
    68         if(StringUtils.isBlank(plainText)){
    69             return null;
    70         }
    71         String result = textToMD5L32(plainText);
    72         return result.substring(8,24);
    73     }
    74  
    75     /**
    76      * 4.对文本进行16位MD5大写加密
    77      * @param plainText 需要进行加密的文本
    78      * @return
    79      */
    80     public static String textToMD5U16(String plainText){
    81         if(StringUtils.isBlank(plainText)){
    82             return null;
    83         }
    84         String result = textToMD5L32(plainText);
    85         return result.toUpperCase().substring(8, 24);
    86     }
    87  
    88     public static void main(String[] args) {
    89         System.out.println(textToMD5U16("0"));
    90     }
    91 }
    我是代码搬运工!!!
  • 相关阅读:
    【模板时间】◆模板·III◆ 单调子序列
    【学时总结】◆学时·VII◆ 高维DP
    【例题收藏】◇例题·IV◇ Wooden Sticks
    【赛时总结】◇赛时·VI◇ Atcoder ABC-104
    【例题收藏】◇例题·III◇ 木と整数 / Integers on a Tree
    【学时总结】◆学时·VI◆ SPLAY伸展树
    【模板时间】◆模板·II◆ 树链剖分
    【赛时总结】◇赛时·V◇ Codeforces Round #486 Div3
    【例题收藏】◇例题·II◇ Berland and the Shortest Paths
    【例题收藏】◇例题·I◇ Snuke's Subway Trip
  • 原文地址:https://www.cnblogs.com/FanKL/p/14074929.html
Copyright © 2020-2023  润新知