您的位置:首页 > 编程语言 > Java开发

用JAVA实现MD5算法

2006-08-27 23:48 330 查看
 
到老外的网站找到的!修改了一下!

 


import java.security.MessageDigest;


public class MD5




...{


    private MessageDigest md5;


    private static MD5 Instance;






    /** *//**


     * Constructs the MD5 object and sets the string whose MD5 is to be computed.


     *


     * @param inStr the <code>String</code> whose MD5 is to be computed


     */


    public synchronized static MD5 getMD5Instance()




    ...{


        if(Instance==null)


            Instance=new MD5();


        return Instance;


    }


    private MD5()




    ...{




        try...{


            


            this.md5 = MessageDigest.getInstance("MD5");


        }


        catch (Exception e)




        ...{


            System.out.println(e.toString());


            e.printStackTrace();


        }


    }






    /** *//**


     * Computes the MD5 fingerprint of a string.


     *


     * @r
bdc5
eturn the MD5 digest of the input <code>String</code>


     */


    public String compute(String inStr)




    ...{


    // convert input String to a char[]


    // convert that char[] to byte[]


    // get the md5 digest as byte[]


    // bit-wise AND that byte[] with 0xff


    // prepend "0" to the output StringBuffer to make sure that we don't end up with


    // something like "e21ff" instead of "e201ff"




    char[] charArray = inStr.toCharArray();


    byte[] byteArray = new byte[charArray.length];


    


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


        byteArray[i] = (byte) charArray[i];


    


    byte[] md5Bytes = this.md5.digest(byteArray);




        StringBuffer hexValue = new StringBuffer();




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




    ...{


        int val = ((int) md5Bytes[i] ) & 0xff; 


        if (val < 16) hexValue.append("0");


        hexValue.append(Integer.toHexString(val));


    }




    return hexValue.toString();


    }


    public static void main(String[] args)




    ...{


        System.out.println(MD5.getMD5Instance().compute("").toUpperCase());


    }


}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息