Javaにおけるmd 5暗号化ツールクラス

5698 ワード

以下は、整理された2つのmd 5暗号化ツールクラス(2つのクラス間には連絡がありません):
1:
public class MD5Utils {
    public static String getMD5(String source) {
        return getMD5(source.getBytes());
    }

    public static String getMD5(byte[] source) {
        String s = null;
        char hexDigits[] = { //          16        
                             '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
        try {
            java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
            byte tmp[];
            synchronized (MD5Utils.class) {
                md.update(source);
                tmp = md.digest(); // MD5          128      ,
            }
            //         16    
            char str[] = new char[16 * 2]; //       16       ,      ,
            //       16      32    
            int k = 0; //               
            for (int i = 0; i < 16; i++) { //         ,  MD5       
                //     16        
                byte byte0 = tmp[i]; //    i    
                str[k++] = hexDigits[byte0 >>> 4 & 0xf]; //       4       ,
                // >>>      ,        
                str[k++] = hexDigits[byte0 & 0xf]; //       4       
            }
            s = new String(str); //            

        } catch (Exception e) {
            e.printStackTrace();
        }
        return s;
    }
}

2:
public class MD5 {

    public static String getMD5Str(String str) {
        MessageDigest messageDigest = null;

        try {
            messageDigest = MessageDigest.getInstance("MD5");
            messageDigest.reset();
            messageDigest.update(str.getBytes("UTF-8"));
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
        }

        byte[] byteArray = messageDigest.digest();

        StringBuffer md5StrBuff = new StringBuffer();

        for (int i = 0; i < byteArray.length; i++) {
            if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)
                md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));
            else
                md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
        }

        return md5StrBuff.toString();
    }

    public static void main(String[] args) {
        getMD5Str(null);
    }

}

よく使うので、後で各項目をひっくり返さないように書いてください.