1. 程式人生 > 實用技巧 >Java中MD5加密的幾種方式

Java中MD5加密的幾種方式

一、MD5加密概述:

MD5資訊摘要演算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼雜湊函式,可以產生出一個128位(16位元組)的雜湊值(hash value),用於確保資訊傳輸完整一致。

MD5為不可逆雜湊演算法,可用於儲存使用者密碼,儲存後永遠不需要知道明文。密碼比較時只需將使用者輸入的密碼再次轉成MD5碼與儲存的相比較即可得知使用者輸入密碼是否正確。linux/unix作業系統一般採用MD5進行使用者密碼加密。

二、Java實現MD5加密的幾種方式:

1、Java自帶的MessageDigest實現

import java.security.MessageDigest;
/**
 * MD5加密
 */
public class MD5Util {
      //鹽,用於混交md5
      private static final String slat = "&%5123***&&%%$$#@";
 
      public static String encrypt(String dataStr) {
            try {
                  dataStr = dataStr + slat;
                  MessageDigest m = MessageDigest.getInstance("MD5");
                  m.update(dataStr.getBytes("UTF-8"));
                  byte s[] = m.digest();
                  String result = "";
                  for (int i = 0; i < s.length; i++) {
                        result += Integer.toHexString((0x000000FF & s[i]) | 0xFFFFFF00).substring(6);
                  }
                  return result;
            } catch (Exception e) {
                  e.printStackTrace();
            }
            return "";
      }
}

2、Spring中的DigestUtils工具類

import org.springframework.util.DigestUtils;
/**
 * MD5加密
 */
public class MD5Util {
      //鹽,用於混交md5
      private static final String slat = "&%5123***&&%%$$#@";

      public static String encrypt(String dataStr) throws UnsupportedEncodingException {
            String base = dataStr + slat;
            String md5 = DigestUtils.md5DigestAsHex(base.getBytes("UTF-8"));
            return md5;
      }
}

3、Apache中的DigestUtils工具類

pom.xml中引入:

<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.10</version>
</dependency>

程式碼實現:

import org.apache.commons.codec.digest.DigestUtils;
/**
 * MD5加密
 */
public class MD5Util {
      //鹽,用於混交md5
      private static final String slat = "&%5123***&&%%$$#@";

      public static String encrypt(String dataStr) throws UnsupportedEncodingException {
            String base = dataStr + slat;
            String md5 = DigestUtils.md5Hex(base.getBytes("UTF-8"));
            return md5;
      }
}