JAVA MD5加密的两种方法

本文提供了两种使用Java实现MD5加密的方法。第一种方法简洁明了,通过创建MD5Util类实现字符串到MD5密文的转换。第二种方法更为详细,通过MD5类展示了一种将输入字符串转换为MD5哈希值的过程。
第一种,代码比较简洁
[java]  view plain copy print ?
  1. import java.security.MessageDigest;  
  2. public class MD5Util {  
  3.     public final static String MD5(String s) {  
  4.         char hexDigits[] = { '0''1''2''3''4',  
  5.                              '5''6''7''8''9',  
  6.                              'A''B''C''D''E''F' };  
  7.         try {  
  8.             byte[] btInput = s.getBytes();  
  9.      //获得MD5摘要算法的 MessageDigest 对象  
  10.             MessageDigest mdInst = MessageDigest.getInstance("MD5");  
  11.      //使用指定的字节更新摘要  
  12.             mdInst.update(btInput);  
  13.      //获得密文  
  14.             byte[] md = mdInst.digest();  
  15.      //把密文转换成十六进制的字符串形式  
  16.             int j = md.length;  
  17.             char str[] = new char[j * 2];  
  18.             int k = 0;  
  19.             for (int i = 0; i < j; i++) {  
  20.                 byte byte0 = md[i];  
  21.                 str[k++] = hexDigits[byte0 >>> 4 & 0xf];  
  22.                 str[k++] = hexDigits[byte0 & 0xf];  
  23.             }  
  24.             return new String(str);  
  25.         }  
  26.         catch (Exception e) {  
  27.             e.printStackTrace();  
  28.             return null;  
  29.         }  
  30.     }  
  31.     public static void main(String[] args) {  
  32.         System.out.print(MD5Util.MD5("password"));  
  33.     }  

  34. 第二种,比较复杂
  35. package other;

    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    /*
     * MD5 算法
    */
    public class MD5 {
        
        // 全局数组
        private final static String[] strDigits = { "0", "1", "2", "3", "4", "5",
                "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };

        public MD5() {
        }

        // 返回形式为数字跟字符串
        private static String byteToArrayString(byte bByte) {
            int iRet = bByte;
            // System.out.println("iRet="+iRet);
            if (iRet < 0) {
                iRet += 256;
            }
            int iD1 = iRet / 16;
            int iD2 = iRet % 16;
            return strDigits[iD1] + strDigits[iD2];
        }

        // 返回形式只为数字
        private static String byteToNum(byte bByte) {
            int iRet = bByte;
            System.out.println("iRet1=" + iRet);
            if (iRet < 0) {
                iRet += 256;
            }
            return String.valueOf(iRet);
        }

        // 转换字节数组为16进制字串
        private static String byteToString(byte[] bByte) {
            StringBuffer sBuffer = new StringBuffer();
            for (int i = 0; i < bByte.length; i++) {
                sBuffer.append(byteToArrayString(bByte[i]));
            }
            return sBuffer.toString();
        }

        public static String GetMD5Code(String strObj) {
            String resultString = null;
            try {
                resultString = new String(strObj);
                MessageDigest md = MessageDigest.getInstance("MD5");
                // md.digest() 该函数返回值为存放哈希值结果的byte数组
                resultString = byteToString(md.digest(strObj.getBytes()));
            } catch (NoSuchAlgorithmException ex) {
                ex.printStackTrace();
            }
            return resultString;
        }

        public static void main(String[] args) {
            MD5 getMD5 = new MD5();
            System.out.println(getMD5.GetMD5Code("000000"));
        }
    }


  1.  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值