消息摘要算法之MD5

有沒有發(fā)現(xiàn)MD5 加密之后的長度是一樣的,不管原本的信息有多長。這是因為 MD5 是摘要算法,有點類似于從你要加密的信息中選取一部分信息出來加密,所以即使你得到了 MD5 加密之后的結(jié)果,也很難從一部分信息中反推出原本的完整信息。另外,MD5 也是存在被破解的情況,那就是最傳統(tǒng)的破解方法,從一堆數(shù)據(jù)中一個個去試。所以, MD5 可以設置一個鹽值,類似于干擾信息,可以降低被破解的概率。

jdk提供的MD5加密

package com.jun.MD;

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

public class JDKmd5 {
    private  static String src="ysj";

    public static void main(String[] args) throws NoSuchAlgorithmException {
        jdkMD5();

    }

    public static void jdkMD5() throws NoSuchAlgorithmException {
        //獲取實例,執(zhí)行準換
        MessageDigest md= MessageDigest.getInstance("MD5");
        byte[] digest = md.digest(src.getBytes());

        //將byte[] 轉(zhuǎn)換成16進制輸出
        System.out.println(bytes2hex(digest));

    }
  
    //將字節(jié)數(shù)組轉(zhuǎn)換成16進制方法
    public static String bytes2hex(byte[] bytes)
    {
        final String HEX = "0123456789abcdef";
        StringBuilder sb = new StringBuilder(bytes.length * 2);
        for (byte b : bytes)
        {
            // 取出這個字節(jié)的高4位,然后與0x0f與運算,得到一個0-15之間的數(shù)據(jù),通過HEX.charAt(0-15)即為16進制數(shù)
            sb.append(HEX.charAt((b >> 4) & 0x0f));
            // 取出這個字節(jié)的低位,與0x0f與運算,得到一個0-15之間的數(shù)據(jù),通過HEX.charAt(0-15)即為16進制數(shù)
            sb.append(HEX.charAt(b & 0x0f));
        }

        return sb.toString();
    }

}
//結(jié)果
805309b2a84c9550d62718f314d7b2ff

常見情況將密碼進行加密存儲到數(shù)據(jù)庫,來保證密碼安全。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容