zoukankan      html  css  js  c++  java
  • Java生成MD5的方法,简单封装并转为32位小写

     1 import java.security.MessageDigest;
     2 
     3 public class MD5 {
     4 
     5     public static String toMD5(String plainText) {
     6         StringBuffer buf = new StringBuffer("");
     7         try {
     8             // 生成实现指定摘要算法的 MessageDigest 对象。
     9             MessageDigest md = MessageDigest.getInstance("MD5");
    10             // 使用指定的字节数组更新摘要。
    11             md.update(plainText.getBytes());
    12             // 通过执行诸如填充之类的最终操作完成哈希计算。
    13             byte b[] = md.digest();
    14             // 生成具体的md5密码到buf数组(32位小写)
    15             int i;
    16 
    17             for (int offset = 0; offset < b.length; offset++) {
    18                 i = b[offset];
    19                 if (i < 0){
    20                     i += 256;
    21                 }
    22                 if (i < 16){
    23                     buf.append("0");
    24                 }else{
    25                     buf.append(Integer.toHexString(i));
    26                 }
    27             }
    28         } catch (Exception e) {
    29             e.printStackTrace();
    30         }
    31         return buf.toString();
    32     }
    33 
    34     public static byte[] toMD5byte(byte[] plainText) {
    35         StringBuffer buf = new StringBuffer("");
    36         try {
    37             // 生成实现指定摘要算法的 MessageDigest 对象。
    38             MessageDigest md = MessageDigest.getInstance("MD5");
    39             // 使用指定的字节数组更新摘要。
    40             md.update(plainText);
    41             // 通过执行诸如填充之类的最终操作完成哈希计算。
    42             byte b[] = md.digest();
    43             // 生成具体的md5密码到buf数组
    44             int i;
    45 
    46             for (int offset = 0; offset < b.length; offset++) {
    47                 i = b[offset];
    48                 if (i < 0)
    49                     i += 256;
    50                 if (i < 16)
    51                     buf.append("0");
    52                 buf.append(Integer.toHexString(i));
    53             }
    54         } catch (Exception e) {
    55             e.printStackTrace();
    56         }
    57         return buf.toString().getBytes();
    58     }
    59 
    60     /**
    61      * 解决php与javaMD5加密不同 获取MD5加密后的字符串
    62      * 
    63      * @param str
    64      *            明文
    65      * @return 加密后的字符串
    66      * @throws Exception
    67      */
    68     public static String getMD5(String str) throws Exception {
    69         /** 创建MD5加密对象 */
    70         MessageDigest md5 = MessageDigest.getInstance("MD5");
    71         /** 进行加密 */
    72         md5.update(str.getBytes("GBK"));
    73         /** 获取加密后的字节数组 */
    74         byte[] md5Bytes = md5.digest();
    75         String res = "";
    76         for (int i = 0; i < md5Bytes.length; i++) {
    77             int temp = md5Bytes[i] & 0xFF;
    78             if (temp <= 0XF) { // 转化成十六进制不够两位,前面加零
    79                 res += "0";
    80             }
    81             res += Integer.toHexString(temp);
    82         }
    83         return res;
    84     }
    85 }
  • 相关阅读:
    Java【第二篇】基本语法之--进制、运算符
    Java【第一篇】基本语法之--关键字、标识符、变量及分类、数据类型及转换
    安装运行zookeeper的坑
    部署java应用的几种方式
    解决sudo用户找不到环境变量的问题
    Python装饰器详解
    filebeat开启自带模块收集日志如何辨别日志来源等
    使用elasticsearch7.3版本在一台主机上部署多个实例组建集群
    redis 集群搭建
    Kibana多用户创建及角色权限控制
  • 原文地址:https://www.cnblogs.com/404code/p/11248422.html
Copyright © 2011-2022 走看看