package nicetime.com.practise;
import java.security.MessageDigest;
/**
 * MD5加密是JAVA应用中常见的算法,请写出两个MD5算法生成32位大写的CapitalMD5方法  和 生成32位小写的 AngelinaMD5 方法
 */
public class Md5Util
{
    //MD5算法生成32位小写
    public String AngelinaMD5(String str) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(str.getBytes());
            byte b[] = md.digest();
            int i=0;
            StringBuffer buf = new StringBuffer("");
            for (int offset = 0; offset < b.length; offset++) {
                i = b[offset];
                if (i < 0)
                    i += 256;
                if (i < 16)
                    buf.append("0");
                buf.append(Integer.toHexString(i));
            }
            str = buf.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return str;
    }
    //MD5算法生成32位大写
    public String CapitalMD5(String str)
    {
        String result=null;
        result=AngelinaMD5(str).toUpperCase();
        return result;
    }
    public static void main(String[] args)
    {
        //加密的字符串
        String str="testMd5Str";
        String smallResult=null;
        String bigResult=null;
        Md5Util md5=new Md5Util();
        smallResult=md5.AngelinaMD5(str);
        System.out.println("smallResult_length="+smallResult.length()+"smallResult="+smallResult);
        bigResult=md5.CapitalMD5(str);
        System.out.println("--bigResult_length="+bigResult.length()+"--bigResult="+bigResult);
    }
}