1. 程式人生 > >常見的加密和解密演算法—MD5

常見的加密和解密演算法—MD5

Java MD5加密
常見的加密和解密演算法—MD5

一、MD5加密概述

Message Digest Algorithm MD5(中文名為訊息摘要演算法第五版)為電腦保安領域廣泛使用的一種雜湊函式,用以提供訊息的完整性保護。該演算法的檔案號為RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。
MD5即Message-Digest Algorithm 5(資訊-摘要演算法5),用於確保資訊傳輸完整一致。是計算機廣泛使用的雜湊演算法之一(又譯摘要演算法、雜湊演算法),主流程式語言普遍已有MD5實現。將資料(如漢字)運算為另一固定長度值,是雜湊演算法的基礎原理,MD5的前身有MD2、MD3和MD4。
MD5演算法具有以下特點:
1、壓縮性:任意長度的資料,算出的MD5值長度都是固定的。
2、容易計算:從原資料計算出MD5值很容易。
3、抗修改性:對原資料進行任何改動,哪怕只修改1個位元組,所得到的MD5值都有很大區別。
4、強抗碰撞:已知原資料和其MD5值,想找到一個具有相同MD5值的資料(即偽造資料)是非常困難的。
MD5的作用是讓大容量資訊在用數字簽名軟體簽署私人金鑰前被"壓縮"成一種保密的格式(就是把一個任意長度的位元組串變換成一定長的十六進位制數字串)。除了MD5以外,其中比較有名的還有sha-1、RIPEMD以及Haval等。

MD5 是非對稱的加密演算法(PS:對稱加密就是加密用的密碼和解密用的密碼是一樣的,非對稱就是加密和解密用的金鑰不一樣)

參考連線:MD5加密

二、Java實現MD5加密解密

1、maven 引入apache的jar(不是maven專案,去網上下一個jar手動引入)

org.apache.commons
commons-lang3
3.3.2

2、MD5使用程式碼

package com.jd.test;

import org.apache.commons.codec.digest.DigestUtils;

import java.security.MessageDigest;

/**
 * MD5通用類
 */
public class MD5 {
    /**
     * MD5方法
     * 
     * @param text 明文
     * @param key 金鑰
     * @return 密文
     * @throws Exception
     */
    public static String md5(String text, String key) throws Exception {
        //加密後的字串
        String encodeStr=DigestUtils.md5Hex(text + key);
        System.out.println("MD5加密後的字串為:encodeStr="+encodeStr);
        return encodeStr;
        }

    /**
     * MD5驗證方法
     * 
     * @param text 明文
     * @param key 金鑰
     * @param md5 密文
     * @return true/false
     * @throws Exception
     */
    public static boolean verify(String text, String key, String md5) throws Exception {
        //根據傳入的金鑰進行驗證
        String md5Text = md5(text, key);
        if(md5Text.equalsIgnoreCase(md5))
        {
            System.out.println("MD5驗證通過");
            return true;
        }

            return false;
    }
}