MD5 压缩算法

importjava.security.MessageDigest;

 

/*

 * 传入参数:一个字节数组传出参数:字节数组的 MD5结果字符串

 */

publicclassMD5 {

    publicstaticString getMD5(String str) {

          String s = null;

 

          // 用来将字节转换成十六进制表示的字符

          // char[] hexDigits = { '0', '1', '2', '3', '4', '5','6', '7', '8',

          // '9', 'a', 'b', 'c', 'd', 'e', 'f' };

 

          try{

              MessageDigest md = MessageDigest.getInstance("MD5");

 

              //MD5加密算法只是对字符数组而不是字符串进行加密计算,得到要加密的对象

              md.update(str.getBytes());

 

              //MD5 的计算结果是一个 128 位的长整数,用字节表示就是 16 个字节

              //进行加密运算并返回字节数组

              bytetmp[] = md.digest();

 

              StringBuilder sb = newStringBuilder();

 

              //字节数组转换成十六进制字符串,形成最终的密文

              for (int i = 0; i < tmp.length; i++) {

                   intvalue = tmp[i] & 0xff;

 

                   if(value < 16) {

                       sb.append(0);

                   }

 

                   sb.append(Integer.toHexString(value));

 

                   //取字节中高 4 位的数字转换,>>>为逻辑右移,将符号位一起右移

                   // sb.append(hexDigits[value >>> 4 &0xf]);

 

                   //取字节中低 4 位的数字转换

                   // sb.append(hexDigits[value & 0xf]);

              }

 

              s = sb.toString();

          } catch(Exception e) {

              e.printStackTrace();

          }

 

          returns;

    }

 

    /**

     * @paramargs

     */

    publicstatic voidmain(String[] args) {

          // byte[] name = { 'Z', 'h', 'o', 'u', 'S', 'h', 'e','n', 'g', 's',

          // 'h', 'u', 'a', 'i' };

 

          String name = "Zhou Shengshuai";

          String md5name = null;

 

          md5name = MD5.getMD5(name);

 

          System.out.println(md5name);

    }

}

 


你可能感兴趣的:(MD5 压缩算法)