java中使用MD5加密的算法


    MD5,全名Message Digest Algorithm 5,中文名為消息摘要算法第五版,為計算機安全領域廣泛使用的一種散列函數,用以提供消息的完整性保護。以下是JAVA語言中使用MD5加密的工具類。

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Util {
    /**
     * 對字符串進行MD5摘要加密,返回結果與MySQL的MD5函數一致
     * 
     * @param input
     * @return 返回值中的字母為小寫
     */
    public static String md5(String input) {
        if (null == input) {
            input = "";
        }
        String result = "";
        try {
            // MessageDigest類用於為應用程序提供信息摘要算法的功能,如MD5或SHA算法
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 獲取輸入
            md.update(input.getBytes());
            // 獲得產出(有符號的哈希值字節數組,包含16個元素)
            byte output[] = md.digest();

            // 32位的加密字符串
            StringBuilder builder = new StringBuilder(32);
            // 下面進行十六進制的轉換
            for (int offset = 0; offset < output.length; offset++) {
                // 轉變成對應的ASSIC值
                int value = output[offset];
                // 將負數轉為正數(最終返回結果是無符號的)
                if (value < 0) {
                    value += 256;
                }
                // 小於16,轉為十六進制后只有一個字節,左邊追加0來補足2個字節
                if (value < 16) {
                    builder.append("0");
                }
                // 將16位byte[]轉換為32位無符號String
                builder.append(Integer.toHexString(value));
            }
            result = builder.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return result;
    }

    // 測試
    public static void main(String[] args) {
        String m1 = md5("123");
        String m2 = md5("124");
        String m3 = md5("");
        System.out.println("m1=" + m1);
        System.out.println("m2=" + m2);
        System.out.println("m3=" + m3);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM