自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MD5 到底是不是加密?

開(kāi)發(fā)
MD5 是程序開(kāi)發(fā)中非常常用的一種算法,很多人都用過(guò)。提到 MD5,大多數(shù)人的反應(yīng)都是「這是一種加密算法」,懂得多點(diǎn)的人還會(huì)說(shuō)「可以用于給密碼加密」,再懂點(diǎn)的還知道「MD5 已經(jīng)有被破解的可能性了」。但 MD5 到底是加密嗎?所謂的加密到底是什么意思?MD5 的破解又是指的什么?

 今天想跟大家談?wù)劊骸窶D5 到底是加密的嗎?」

 

 

 

[[316078]]

 

MD5 是程序開(kāi)發(fā)中非常常用的一種算法,很多人都用過(guò)。提到 MD5,大多數(shù)人的反應(yīng)都是「這是一種加密算法」,懂得多點(diǎn)的人還會(huì)說(shuō)「可以用于給密碼加密」,再懂點(diǎn)的還知道「MD5 已經(jīng)有被破解的可能性了」。但 MD5 到底是加密嗎?所謂的加密到底是什么意思?MD5 的破解又是指的什么?

MD5:一種哈希算法

實(shí)質(zhì)上,MD5 只是一種哈希算法。

哈希算法,即 hash,又叫散列算法,是一類(lèi)把任意數(shù)據(jù)轉(zhuǎn)換為定長(zhǎng)(或限制長(zhǎng)度)數(shù)據(jù)的算法統(tǒng)稱(chēng)。例如我叫張三,你叫李四,那么「人 -> 人名」的算法就叫屬于一種哈希算法。哈希算法通常用于制作數(shù)字指紋,數(shù)字指紋的意思就是「你看到這個(gè)東西就像看到原數(shù)據(jù)一樣」,例如我們?cè)谝恍┚W(wǎng)站下載大文件的時(shí)候,網(wǎng)站提供給我們驗(yàn)證文件完整性的 MD5 或者 SHA1 碼,就是原文件的哈希值。哈希算法有很多種,MD5 是其中的一種,這就是 MD5。所以,優(yōu)秀的哈希算法通常需要具有低碰撞概率(即不同數(shù)據(jù)的哈希值通常也不一樣)。

加密是什么?

加密,指的是對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換以后,數(shù)據(jù)變成了另一種格式,并且除了拿到解密方法的人,沒(méi)人能把數(shù)據(jù)轉(zhuǎn)換回來(lái)。因此,加密通常用于網(wǎng)絡(luò)通信。因?yàn)榫W(wǎng)絡(luò)上的通信數(shù)據(jù),任何人都有可能會(huì)拿到,把數(shù)據(jù)加密后再傳送,送達(dá)以后由對(duì)方解密后再查看,就可以防止網(wǎng)絡(luò)上的偷窺。例如大家都知道「安全」但很少人知道「為什么安全」的 HTTPS,就是通過(guò)加密算法來(lái)保障的網(wǎng)絡(luò)安全性。

所以,MD5 是加密嗎?

加密算法的目的,在于別人無(wú)法成功查看加密后的數(shù)據(jù),并且在需要的時(shí)候還可以對(duì)數(shù)據(jù)進(jìn)行解密來(lái)重新查看數(shù)據(jù)。而 MD5 算法是一種哈希算法,哈希算法的設(shè)計(jì)目標(biāo)本身就決定了,它在大多數(shù)時(shí)候都是不可逆的,即你經(jīng)過(guò)哈希算法得出的數(shù)據(jù),無(wú)法再經(jīng)過(guò)任何算法還原回去。所以,既然不能將數(shù)據(jù)還原,也就不能稱(chēng)之為可以解密;既然不能解密,那么哈希的過(guò)程自然也就不能稱(chēng)作是「加密」了。

不可逆加密」?

你如果試試去查詢(xún)百度百科,會(huì)發(fā)現(xiàn)有一個(gè)「MD5 加密」的詞條:

 

 

 

 

甚至還有一個(gè)詞條叫做「不可逆加密算法」:

 

 

 

 

在「不可逆加密算法」詞條下,MD5 赫然在列。

然而,他們都是錯(cuò)的。甚至,「不可逆加密算法」這個(gè)詞,也是人造的。你甚至可以在網(wǎng)上搜索到一些博客,將加密算法歸類(lèi)為「可逆加密」和「不可逆加密」兩類(lèi)。這其實(shí)不能怪百度百科,也不能怪這些歸類(lèi)的人,要怪只能怪,關(guān)于數(shù)據(jù)轉(zhuǎn)換相關(guān)的內(nèi)容太多、太雜,導(dǎo)致大家用著用著就混淆了。

這些小知識(shí)有什么用?

在開(kāi)發(fā)中,經(jīng)常會(huì)遇到 RSA、AES、BASE64、MD5、SHA1、SHA256、GZIP 這些詞,他們的意義和使用場(chǎng)景都是各不相同的。在剛?cè)胄械臅r(shí)候,作為一個(gè)底層小碼農(nóng),只要按照同事的指示,讓我 BASE64 我就 BASE64,讓我 MD5 我就 MD5,不用問(wèn)為什么。但是當(dāng)你有了一定工作經(jīng)驗(yàn)之后,就應(yīng)該慢慢開(kāi)始對(duì)這些內(nèi)容有所了解了,不然不僅在開(kāi)發(fā)中會(huì)遇到各種障礙,而且在項(xiàng)目出了相關(guān)問(wèn)題的時(shí)候,你甚至不知道是你的問(wèn)題還是同事的問(wèn)題。做開(kāi)發(fā),誰(shuí)都想往高處走,但你在往高處走之前,需要先建立起自己的優(yōu)勢(shì)。

所以如果你只是把這當(dāng)做一個(gè)「小知識(shí)」,用「MD5 是不是加密」來(lái)跟朋友炫技或者用來(lái)在面試時(shí)提問(wèn)求職者,這可能確實(shí)沒(méi)有什么用。要知道,有用的不是小知識(shí),而是在你能夠?qū)@些小知識(shí)輕松回答時(shí),所體現(xiàn)出的完整知識(shí)體系。如果把它的本質(zhì)了解清楚,它到底是什么、有什么用、怎么用,以及它的相關(guān)知識(shí)都有哪些,它們各自的含義、用法和區(qū)別是什么,這樣的體系化的知識(shí),以及這種不斷把自己的知識(shí)向體系化轉(zhuǎn)換的意識(shí),將會(huì)對(duì)你非常有用。

責(zé)任編輯:武曉燕 來(lái)源: 扔物線(xiàn) 碼個(gè)蛋
相關(guān)推薦

2016-12-15 09:26:53

MD5加密

2019-06-06 08:30:07

區(qū)塊鏈數(shù)字貨幣比特幣

2012-07-02 09:40:45

小米手機(jī)

2021-01-11 05:37:54

倉(cāng)儲(chǔ)模式接口

2022-10-18 22:21:51

2022-11-09 08:24:39

2009-06-06 18:57:47

MD5加密類(lèi)Java Bean

2015-03-23 11:21:08

2020-10-15 08:20:52

MD5算法加密的過(guò)程

2019-02-27 09:28:15

Redis服務(wù)器事務(wù)

2024-07-05 09:00:00

編程語(yǔ)言Rust開(kāi)發(fā)

2009-06-30 10:05:24

MD5加密JSP源碼

2021-08-02 14:48:15

云電腦Windows 365華為

2016-12-23 09:04:56

大數(shù)據(jù)技術(shù)BAT

2020-06-17 07:37:35

5G4G應(yīng)用

2021-02-19 11:55:36

C語(yǔ)言MD5加密

2019-12-16 09:42:38

PHP語(yǔ)言程序員

2021-04-13 10:35:13

網(wǎng)盤(pán)存儲(chǔ)硬盤(pán)

2021-03-10 13:42:27

筆記本雙屏設(shè)計(jì)

2009-09-09 18:35:07

C# 加密MD5和SHA1
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)