成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MD5現在還有人用么?

安全 應用安全
實際上,MD5由美國密碼學家羅納德·李維斯特(Ronald Linn Rivest)設計,于1992年公開,用以取代MD4算法。

說到密碼學,阿粉現在真的是非常的頭大,為啥呢?因為密碼學真的是有點難度呀,各種各樣的加密手段,各種各樣的解密手段,像 MD5 呀,還有 RSA 呀,還有 DES 呀,反正就是一大堆,接下來的幾天,阿粉就來逐個的分析一下這個關于密碼中的各種加密手段,以及他們是如何使用的。

MD5 的前世今生

實際上,MD5由美國密碼學家羅納德·李維斯特(Ronald Linn Rivest)設計,于1992年公開,用以取代MD4算法。

也就是說,在他之前,還有 MD4 算法,而 MD4 是麻省理工學院教授Ronald Rivest于1990年設計的一種信息摘要算法。它是一種用來測試信息完整性的密碼散列函數的實行。其摘要長度為128位,一般128位長的MD4散列被表示為32位的十六進制數字。

當時設計出來 MD4之后,就出現了兩個不服氣的人,非要證明這個玩意是不對的,關鍵是,這兩個人還真的成功了,一個是Den boer 另外一個Bosselaers 這兩個大哥,伙同一撥人,還真的找到了 MD4 的漏洞,找到MD4完整版本中的沖突(這個沖突實際上是一種漏洞,它將導致對不同的內容進行加密卻可能得到相同的加密后結果)。毫無疑問,MD4就此被淘汰掉了。

而李維斯特肯定也不服氣呀,于是在1992年的時候,李維斯特向互聯網工程任務組(IETF)提交了一份重要文件,描述了 MD5 這種算法的原理。由于這種算法的公開性和安全性,在90年代被廣泛使用在各種程序語言中,用以確保資料傳遞無誤等。

而之后,這個 MD5 可謂是影響深遠,當時據說 Den boer 另外一個Bosselaers 這兩個大哥 又開始挑刺,發現了MD5算法中的假沖突(pseudo-collisions),但除此之外就沒有其他被發現的加密后結果了。所以也就沒有后續內容了,于是在之后的時間里,MD5 就開始被大眾廣泛認知了,一直持續了四五年的時間。

在 1996年后該算法被證實存在弱點,可以被加以破解,對于需要高度安全性的數據,專家一般建議改用其他算法,如 SHA-2。

2004年,證實MD5算法無法防止碰撞(collision),因此不適用于安全性認證,如SSL公開密鑰認證或是數字簽名等用途。

所以,在之后,MD5 陸陸續續的退出歷史舞臺,雖然退出了歷史舞臺,但是,影響還是在的,至今也有 MD5 加密方式的存在,不信大家可以巴拉一下自己的項目,看看有沒有關于這個 MD5 的代碼存在呢?

什么是MD5

MD5碼是以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經過了一系列的處理后,算法的輸出由四個32位分組組成,將這四個32位分組級聯后將生成一個128位散列值。

大家看一下百度百科上面給出的流程圖

圖片

其實總的來說,MD5 就是對一個不變的數據進行加密,而加密之后的字符串也是不變的,只要對元數據哪怕做一個簡單的字符修改,那么通過 MD5 加密之后的密碼數據,都會對應的做出改變,就相當于是一個人的 "指紋"。

Java實現 MD5 那真的是太簡單了,實例代碼如下:

public class MD5 {
/**
* @param text明文
* @param key密鑰
* @return 密文
*/
// 帶秘鑰加密
public static String md5(String text, String key) throws Exception {
// 加密后的字符串
String md5str = DigestUtils.md5Hex(text + key);
System.out.println("MD5加密后的字符串為:" + md5str);
return md5str;
}

// 不帶秘鑰加密
public static String md52(String text) throws Exception {
// 加密后的字符串
String md5str = DigestUtils.md5Hex(text);
System.out.println("MD52加密后的字符串為:" + md5str + "\t長度:" + md5str.length());
return md5str;
}

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

MD5 為什么被棄用了

既然我們上面都說了 MD5 算是比較強大的了,為什么現在 MD5 會被大家棄用了呢?

一條信息的安全性取決于任何信息摘要函數的目標是產生看起來是隨機的摘要。要被認為是加密安全的,哈希函數應該滿足兩個要求:

1,攻擊者不可能生成一個與特定的哈希值相匹配的信息。

2,攻擊者不可能創建兩個產生相同哈希值的消息。

根據IETF,MD5哈希值不再被認為是加密安全的方法,不應該被用于加密認證。

2011年,IETF發布了RFC6151——MD5消息摘要和HMAC-MD5算法的最新安全考慮,其中引用了一些最近針對MD5哈希值的攻擊。它提到了一個在標準筆記本上一分鐘或更短的時間內產生哈希碰撞的攻擊,以及另一個在2.6千兆赫的奔騰4系統上僅用10秒就能產生碰撞的攻擊。因此,IETF建議,新的協議設計根本不應該使用MD5,最近針對該算法的研究抨擊到:在需要抗碰撞的應用中取消MD5的使用,如數字簽名。

這樣,就導致了當信息哈希代碼無意中被重復時,它有可能造成信息碰撞。MD5的哈希代碼串也被限制在128位。這使得它們比后來的其他哈希碼算法更容易被破解。

所以,當人們發現這個算法不太合適的時候,就開始棄用了這個算法,慢慢的就衍生出了其他的相對于MD5 更加安全的算法了。

而當時驗證最早的卻不是2011年,而是2004年通過我國的王曉云教授等學者的工作,md5已經被證明可以進行碰撞攻擊。也就是說,攻擊者可以產生兩個應用程序,內容不一樣,但是哈希值完全一樣。這就導致了在大家的眼中,MD5 已經算是不夠安全的數據了,所以,MD5 就逐漸的被大家所淘汰,使用的情況也就不是那么多了。

為什么說MD5是不可逆的?

我們就簡單的用A乘以B,一定會得到一個固定的結果C。

比如說A(188923010)和B(172389945)

但是如果只是給你一個結果C,你知道C是由那幾個因式計算出來的結果嗎?

我相信你也猜不出來。所以, 只能從一個方向推導結果,不能從結果反過來逆向推導,就叫單向函數不可逆, 即Md5算法不可逆。

更不用說,通過MD5的復雜算法來進行計算以后得到的固定長度值了。

但是也有很多人說的比較官方,就像百度上的一些大哥生活的:

MD5不可逆的原因是由于它是一種散列函數(也叫哈希函數,哈希函數又稱散列函數,雜湊函數,他是一個單向密碼體制,即從明文到密文的不可逆映射,只有加密過程沒有解密過程,哈希函數可以將任意長度的輸入經過變化后得到固定長度的輸出,這個固定長度的輸出稱為原消息的散列或消息映射。理想的哈希函數可以針對不同的輸入得到不同的輸出,如果存在兩個不同的消息得到了相同的哈希值,那我們稱這是一個碰撞),使用的是hash算法,在計算過程中原文的部分信息是丟失了的。一個MD5理論上是可以對應多個原文的,因為MD5是有限多個而原文是無限多個的。

這么說的話,感覺如果面試官問到的話,肯定回答的不是很好,反而不如先總結一下,然后再說出自己的理解。

關于MD5 你了解了么?

責任編輯:武曉燕 來源: Java極客技術
相關推薦

2016-12-15 09:26:53

MD5加密

2021-07-27 05:49:59

MySQL數據庫中間件

2022-01-04 21:45:43

蘋果6安卓手機

2016-12-20 08:11:26

地圖Here科技早新聞

2018-03-13 14:21:07

2021-05-25 10:05:39

Python模擬導彈代碼

2022-10-18 22:21:51

2021-10-06 15:52:20

5G運營商基站

2021-11-12 14:17:36

AI 6G人工智能

2015-03-23 11:21:08

2020-10-15 08:20:52

MD5算法加密的過程

2009-06-06 18:57:47

MD5加密類Java Bean

2020-05-28 11:00:40

Flutter代碼框架

2009-06-30 10:05:24

MD5加密JSP源碼

2010-01-06 09:54:30

.NET Framew

2021-12-06 18:16:14

SQLCRCMD5

2020-02-25 16:30:36

MD5是不是加密

2022-01-04 09:24:32

Python Excel 表格

2021-02-04 13:32:55

jsp技術servlet

2021-06-07 10:00:41

MD5算法加密
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品福利在线 | 黄色欧美 | 精品国产高清一区二区三区 | 亚洲国产一区二区在线 | 中文字幕欧美在线观看 | 国产精品高清一区二区 | 精品国产一二三区 | 久久精品国产亚洲一区二区 | 欧美日产国产成人免费图片 | 亚洲一区二区三区四区五区午夜 | 91精品国产综合久久婷婷香蕉 | 国产精品波多野结衣 | 亚洲不卡一 | 日韩成人| 国产精品一区二区福利视频 | 五月激情久久 | 久久久久久综合 | 欧美久| 一本一道久久a久久精品蜜桃 | 日韩国产黄色片 | 涩涩视频大全 | 久久久久国产精品免费免费搜索 | 久久久久国产精品一区二区 | 国产精品久久久久久久午夜 | 亚洲欧美日韩精品久久亚洲区 | 国产香蕉视频 | 国产精品视频免费观看 | av男人的天堂在线 | 欧美成人a∨高清免费观看 色999日韩 | 亚洲国产精品va在线看黑人 | 成人综合视频在线观看 | 日韩欧美黄色 | 亚洲精品国产精品国自产在线 | 亚洲精品一区二区三区蜜桃久 | 国产一区二区电影 | 免费a网 | 精品久久久久久18免费网站 | 久久av网 | 午夜视频网站 | 久久精品国产亚洲 | 人人擦人人 |