MD5加密

来源:互联网 发布:南京软件开发工资 编辑:程序博客网 时间:2024/06/06 07:25

publicclass PassMd5 {

   

    privatefinalstatic String[]hexDigits = {"0","1", "2","3", "4",    

        "5","6", "7","8", "9","a", "b","c", "d","e", "f"};    

    /** 对字符串进行MD5加密    */    

    publicstatic String encodeByMD5(StringoriginString){    

        if (originString !=null){    

            try{  

              //它接收任意大小的数据,并输出固定长度的哈希值。

              //获得一个处理MD5类型的数据MessageDigest对象

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

                //使用指定的字节数组对摘要进行最后更新,然后完成摘要计算,

               //获得固定长度的哈希值:16位数组,数组内值范围-255~256

                byte[] results =md.digest(originString.getBytes());    

                //将得到的字节数组变成字符串返回    

                String resultString =byteArrayToHexString(results);    

                String pass =  resultString.toUpperCase();    

                return pass;  

            } catch(Exception ex){    

                ex.printStackTrace();    

            }    

        }    

        returnnull;    

    }    

    //遍历哈希数组值,串联为一个32为字符串

    privatestatic String byteArrayToHexString(byte[] b){    

        StringBuffer resultSb = newStringBuffer();    

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

            resultSb.append(byteToHexString(b[i]));    

        }    

        return resultSb.toString();    

    }    

 /**将一个字节转化成十六进制形式的字符串    */    

privatestatic String byteToHexString(byte b){ 

    //b的范围为-255~256  

        int n = b;    

        if (n < 0)    

            n = 256 + n;    

        int d1 = n / 16;    

        int d2 = n % 16;    

        returnhexDigits[d1] +hexDigits[d2];    

   

}

原创粉丝点击