MD5加密相比於其他加密有什麼好處?

MD5加密相比於其他加密有什麼好處?今天一面試官如是說道。如何來的優越性?


首先,md5不是加密。

然後就是這樣。


趕緊倉皇逃竄。。。。

md5是摘要演算法,你學數據結構的時候學過哈希表吧?也有叫散列的。md5就是干那個用的

當然,如果硬要說的話。。。你可以用md5 hash一段字元串,也算是加密好了,不過你解不出來。。。。

至於水貨問你的問題。。。。這其實是一道政治題,政治題嘛,無非是說性能好、使用廣、案例多、夠用、是折衷的最佳選擇云云,唉,你上過中學政治的伐?


所謂的MD5加密其實就是利用MD5的低碰撞率的特性,將認證密碼串入用戶名、隨機數和兩個特定的數字(5c和36?記不太清了,你可以自己去查RFC),主要是用來做認證,IPsec中提出來的。
好處就是利用MD5的優勢解決了公開網路中交換密鑰、認證的問題。
這是網路方面的問題,你不應該問到演算法中來


MD5是hash,或者說在大分類上屬於MAC(Message Authentication Code)中文譯為「消息認證碼」。問你問題這個人自己都沒有搞清楚,以為是加密(Encryption)呢。下面簡單說說Encryption和MAC的區別。

Encryption是為了保護明文的隱私性(privacy),防止隱私泄漏。設想一對小青年Alice和Bob還在曖昧中,倆人偷偷摸摸地去約會吃飯,不想讓別人知道。Alice想告訴Bob今天約會時幾點去吃飯,但是不想讓其他任何人(可以抽象為以她的情敵Carol為代表的一切其他人)知道他倆的吃飯時間,這時候就用到加密。加密後解密者可以從密文(ciphertext)中恢復出明文(plaintext),也就是吃飯時間。

到MAC的時候場景就變了。這時候Alice和Bob這對小(gou)青(nan)年(nv)關係已經很穩定了,路人皆知了。但是情敵Carol依然存在,賊心不死。Alice這個時候再也不怕倆人約會吃飯的時間被別人看到了,她怕的是情敵篡改時間,讓倆人不能碰面。於是她以明文發送時間,然後再附上對這個時間的MAC。Carol如果篡改了時間,那麼MAC是照應不上的。也就是,此時不是為了保護這個約會時間的隱私性,而是為了保護它的完整性(integrity)。

補充:
1. 在這個約會的例子里Carol當然可以很輕易的連MAC一起篡改掉,即由(Time_1,Mac_1)直接變為(Time_2,Mac_2)。但是這只是為了和加密形成對比而舉的一個例子。實際應用中,用MAC來保證軟體不被篡改什麼的就不會發生這種情況。因為此時,MAC可以在真正的官方下載站上公布。
2. MAC是單向的,無法從密文中恢復出明文。所謂的「解密」其實就是猜測一個明文,對這個明文MAC看最後的結果對不對的上,這並不是解密。


md5也是一種哈希演算法吧。
當一個很大的文件,比如ubuntu的iso,4個G,如果下載下來後,想知道文件對不對,有沒有損壞,那麼這個時候怎麼辦呢。用一種hash方法,計算這個4G文件的hash值,值是一串128位長的字元串,這個串在你下載這個iso的時候,一般會在相關地方掛著,你能看到的。也就是說,每次他們發布一個iso的時候,會放一個md5值,再放一個iso文件。當你下載下來這個iso文件後,你擔心文件有損壞或者不一樣,那麼你可以按照md5演算法自己對你下載的iso計算出一個串,如果你計算的串和官方掛出來的字元串一致,那說明有非常非常非常非常高的可能:這個下載下來的iso沒問題,非常非常非常非常非常低的概率:這個iso有問題。
因為md5計算後生成的是一個128位長的串,在很大程度上避免了兩個不相同的文件得到相同的哈希值,因此現在用的很廣泛。
而這種hash演算法的計算過程就是不停的移位不停的與或非的,計算起來很快。當然,大部分哈希都這樣。

再提一句,md5不是加密,或者即使說它是加密演算法,它也不可能解密。理由是:如果能根據一個128位長的字元串解密成一個4G的iso文件,那麼這是多麼高效的一種壓縮演算法。所以我寧願叫md5是打tag的方法。

哎呀我也要去找工作了,求好運!


參考鏈接:MD5MD5演算法的C++實現


MD5不是加密演算法, 因為如果目的是加密,必須滿足的一個條件是加密過後可以解密。但是MD5是無法從結果還原出原始數據的。

MD5隻是一種哈希演算法,一般用來計算摘要,將不定長的輸入轉化為128bit的散列結果。這也是不能還原的原因啦,想用128bit還原一個原始可能上G的文件?巧婦難為無米之炊啊。

最常用的情況就是用戶下載完文件以後,用MD5演算法計算下載文件的MD5校驗和,然後通過檢查與伺服器之前提供的校驗和是否一致,就能判斷下載的文件是否出錯或者被修改過了。


好處大了…

不可能解密一個MD5加密過的信息…有密鑰也不行。

多麼強大的加密能力啊!四捨五入一下就就是一個億的混淆能力啊。


要用它跟其它hash比的話 那就是
它比較快 /CRC不算啊太容易撞了
它使用廣泛
它比較短一眼能看到邊?


如果硬要說加密的話,那好處就是無法解密......
而且也不太簡便,所以下毛片兒的時候磁力鏈接都是鏈接+任意N個字元進行base64的......
這時候你用MD5你就擼不到了啊!!!!


MD5加密是為了不讓哪些人在哪些地方看到加密前的數據?回答這個問題才是使用MD5的意義所在。


通俗的理解,可以理解MD5是一種有損壓縮(自然沒法還原文件),能想到幾個好處:
1.壓縮到固定長度128bit,長度小適合互聯網傳輸;
2.相同文件多次壓縮的值不變,常用於對文件的是否被篡改的校驗;
3.不同文件壓縮後出現值衝突的幾率很小;
4.md5演算法比同類的sha-1計算速度快;


md5的性能和安全度最高


推薦閱讀:

怎麼看演算法書?
演算法競賽和數學競賽對選手的考察點有什麼不同?
如何通俗易懂地講解牛頓迭代法求開方?
RSA SecurID 動態令牌的原理是什麼?
純粹只是一道C++題目,求錯誤分析

TAG:演算法 | 加密 | 密碼加密 | MD5 |