天天看點

用JAVA實作MD5算法

到老外的網站找到的!修改了一下!

用JAVA實作MD5算法

import  java.security.MessageDigest;

用JAVA實作MD5算法

public   class  MD5

用JAVA實作MD5算法
用JAVA實作MD5算法

... {

用JAVA實作MD5算法

    private MessageDigest md5;

用JAVA實作MD5算法

    private static MD5 Instance;

用JAVA實作MD5算法
用JAVA實作MD5算法
用JAVA實作MD5算法
用JAVA實作MD5算法

    public synchronized static MD5 getMD5Instance()

用JAVA實作MD5算法
用JAVA實作MD5算法

    ...{

用JAVA實作MD5算法

        if(Instance==null)

用JAVA實作MD5算法

            Instance=new MD5();

用JAVA實作MD5算法

        return Instance;

用JAVA實作MD5算法

    }

用JAVA實作MD5算法

    private MD5()

用JAVA實作MD5算法
用JAVA實作MD5算法

    ...{

用JAVA實作MD5算法
用JAVA實作MD5算法

        try...{

用JAVA實作MD5算法
用JAVA實作MD5算法

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

用JAVA實作MD5算法

        }

用JAVA實作MD5算法

        catch (Exception e)

用JAVA實作MD5算法
用JAVA實作MD5算法

        ...{

用JAVA實作MD5算法

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

用JAVA實作MD5算法

            e.printStackTrace();

用JAVA實作MD5算法

        }

用JAVA實作MD5算法

    }

用JAVA實作MD5算法
用JAVA實作MD5算法
用JAVA實作MD5算法
用JAVA實作MD5算法

    public String compute(String inStr)

用JAVA實作MD5算法
用JAVA實作MD5算法

    ...{

用JAVA實作MD5算法

    // convert input String to a char[]

用JAVA實作MD5算法

    // convert that char[] to byte[]

用JAVA實作MD5算法

    // get the md5 digest as byte[]

用JAVA實作MD5算法

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

用JAVA實作MD5算法

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

用JAVA實作MD5算法

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

用JAVA實作MD5算法
用JAVA實作MD5算法

    char[] charArray = inStr.toCharArray();

用JAVA實作MD5算法

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

用JAVA實作MD5算法
用JAVA實作MD5算法

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

用JAVA實作MD5算法

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

用JAVA實作MD5算法
用JAVA實作MD5算法

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

用JAVA實作MD5算法
用JAVA實作MD5算法

        StringBuffer hexValue = new StringBuffer();

用JAVA實作MD5算法
用JAVA實作MD5算法

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

用JAVA實作MD5算法
用JAVA實作MD5算法

    ...{

用JAVA實作MD5算法

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

用JAVA實作MD5算法

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

用JAVA實作MD5算法

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

用JAVA實作MD5算法

    }

用JAVA實作MD5算法
用JAVA實作MD5算法

    return hexValue.toString();

用JAVA實作MD5算法

    }

用JAVA實作MD5算法

    public static void main(String[] args)

用JAVA實作MD5算法
用JAVA實作MD5算法

    ...{

用JAVA實作MD5算法

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

用JAVA實作MD5算法

    }

用JAVA實作MD5算法

}