MD5加密的两种方法

一、加密后的密文中英文字母为大写

      /**
	    * 加签
	    * @param plain   原串
	    * @param charset 字符集编码
	    * @return
	    */
	   public static String sign(String plain, String charset) {
	        StringBuffer md5Str = new StringBuffer(32);
	        try {
	            MessageDigest md = MessageDigest.getInstance("MD5");
	            if (charset == null || "".equals(charset)) {
	                    charset = "UTF-8";
	            }
	            byte[] array = md.digest(plain.getBytes(charset));
	            for (int i = 0; i < array.length; i++) {
	                    md5Str.append(Integer.toHexString((array[i] & 0xFF) | 0x100).toUpperCase().substring(1, 3));
	            }
	        } catch (Exception ex) {
	                ex.printStackTrace();
	        }
	        return md5Str.toString();
	   }

输入:olA6KYKATu4aEfz11559039716416
输出:889D12CDAE7A5C59AD10D63F6A0E650B
二、加密后的密文中英文字母为小写

       private static final int _1024 = 1024;
	   private static final int _4 = 4;
	   private static final int _0xf0 = 240;
	   private static final int _0xf = 15;
	   private static final String C_FLAG = "-";
	   private static final char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
	   private static MessageDigest messagedigest = null;
	   public static String getMD5String(String s)
	   {
	     return getMD5String(s.getBytes());
	   }
	   public static String getMd5String(String[] strings) {
	     StringBuilder builder = new StringBuilder();
	     for (String str : strings) {
	       builder.append(str).append("-");
	     }
	     byte[] inputByteArray = StringUtils.removeEnd(builder.toString(), "-").getBytes();
	     messagedigest.update(inputByteArray);
	     byte[] resultByteArray = messagedigest.digest();
	     return bufferToHex(resultByteArray);
	   }
	   public static boolean checkPassword(String password, String md5PwdStr)
	   {
	     String s = getMD5String(password);
	     return s.equals(md5PwdStr);
	   }
	   public static String getFileMD5String(File file)
	     throws IOException
	   {
	     InputStream fis = new FileInputStream(file);
	     byte[] buffer = new byte[1024];
	     int numRead = 0;
	     while ((numRead = fis.read(buffer)) > 0) {
	       messagedigest.update(buffer, 0, numRead);
	     }
	     fis.close();
	     return bufferToHex(messagedigest.digest());
	   }
	   public static String getMD5String(byte[] bytes) {
	     messagedigest.update(bytes);
	     return bufferToHex(messagedigest.digest());
	   }
	   private static String bufferToHex(byte[] bytes) {
	     return bufferToHex(bytes, 0, bytes.length);
	   }
	   private static String bufferToHex(byte[] bytes, int m, int n) {
	     StringBuffer stringbuffer = new StringBuffer(2 * n);
	     int k = m + n;
	     for (int l = m; l < k; l++) {
	       appendHexPair(bytes[l], stringbuffer);
	     }
	     return stringbuffer.toString();
	   }
	   private static void appendHexPair(byte bt, StringBuffer stringbuffer) {
	     char c0 = hexDigits[((bt & 0xF0) >> 4)];
	     char c1 = hexDigits[(bt & 0xF)];
	     stringbuffer.append(c0);
	     stringbuffer.append(c1);
	   }
	   static
	   {
	     try{
	             messagedigest = MessageDigest.getInstance("MD5");
	     } catch (NoSuchAlgorithmException nsaex) {
                  nsaex.printStackTrace();
	     }
	   }

输入:olA6KYKATu4aEfz11559039716416
输出:889d12cdae7a5c59ad10d63f6a0e650b

你可能感兴趣的:(java)