md 5暗号化ツールクラス(16ビット、32ビット、64ビット)

1700 ワード

    /**
     *       
     * @param str             
     * @param isUpper      (false   ,true   )
     * @param bit          (16,32,64)
     * @return
     */
    public static String getMD5(String str, boolean isUpper, Integer bit) {
        String md5 = null;
        try {
            //       
            MessageDigest md = MessageDigest.getInstance("md5");
            if (bit == 64) {
                BASE64Encoder bw = new BASE64Encoder();
                md5 = bw.encode(md.digest(str.getBytes("utf-8")));
            } else {
                //   MD5  
                md.update(str.getBytes());
                byte b[] = md.digest();
                int i;
                StringBuilder sb = new StringBuilder();
                for (byte aB : b) {
                    i = aB;
                    if (i < 0) {
                        i += 256;
                    }
                    if (i < 16) {
                        sb.append("0");
                    }
                    sb.append(Integer.toHexString(i));
                }
                md5 = sb.toString();
                if (bit == 16) {
                    //  32 md5 16 
                    md5 = md5.substring(8, 24);
                    if (isUpper) {
                        md5 = md5.toUpperCase();
                    }
                    return md5;
                }
            }
            //     
            if (isUpper) {
                md5 = md5.toUpperCase();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return md5;
    }

転載先:https://blog.csdn.net/weixin_34397224/article/details/80284047