• 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 }
  • 相关阅读:
    atoi (String to Integer) leetcode
    按层逆遍历一棵树,使用满二叉树存储
    unix网络编程-配置unp.h头文件
    ListView系列(七)——Adapter内的onItemClick监听器四个arg参数
    Windows系统下安装VirtualBox,系统找不到指定路径的做法
    Android Fragment完全解析,关于碎片你所需知道的一切
    【Android开源框架列表】
    fragment报错
    2013 年开源中国 10 大热门 Java 开源项目
    【移动开发】Android中三种超实用的滑屏方式汇总(ViewPager、ViewFlipper、ViewFlow)
  • 原文地址:https://www.cnblogs.com/404code/p/11248422.html
Copyright © 2020-2023  润新知