你所需要知道的關(guān)于加密的事
![](http://image.woshipm.com/wp-files/img/76.jpg)
昨天股票漲的好,大家看文章的心情也很好啊,看到昨日閱讀量創(chuàng)下新高,今日提筆也是感到壓力山大啊,產(chǎn)品和開(kāi)發(fā)之間總有說(shuō)不完的話(huà)題,想必好多產(chǎn)品也在悄悄掰著指頭數(shù)著開(kāi)發(fā)惹惱產(chǎn)品的N句話(huà),好了,這個(gè)話(huà)題我們改天接著聊,今天還是繼續(xù)說(shuō)說(shuō)技術(shù)上的事——加密。
產(chǎn)品童鞋應(yīng)該經(jīng)常會(huì)從開(kāi)發(fā)那里聽(tīng)到什么密鑰,公鑰,私鑰什么的,雖然可能不太清楚具體是神馬,但是應(yīng)該都知道是用來(lái)加密傳輸?shù)男畔⒌模绻懒思用艿脑?,就不?huì)被這看似神秘的詞兒給繞暈了,被忽悠的概略也會(huì)大大降低。
加密這個(gè)東西由來(lái)已久,例如古代的藏頭詩(shī)就是文藝氣息爆表的加密技術(shù),作者想真正表達(dá)的文字信息被按照一定規(guī)則放在詩(shī)句的各個(gè)位置,我們可以把這個(gè)規(guī)則叫做加密算法。如果大家都不知道藏頭詩(shī)的加密算法,那寫(xiě)首藏頭詩(shī)把皇帝罵一通,那也沒(méi)啥可怕的,事實(shí)上這樣做的人都掛了,原因當(dāng)然顯而易見(jiàn),加密算法被破解了唄,誰(shuí)不知道你在說(shuō)啥?。?/p>
從上面的例子可以看到現(xiàn)代加密的雛形,對(duì)明文信息按照一定的算法進(jìn)行打亂重排,如果能將加密算法完美隱藏起來(lái),那么這個(gè)加密就是安全的,但是這只是如果,事實(shí)上這種將加密算法隱藏起來(lái)的做法是不安全的,一旦算法被泄漏,加密就毫無(wú)意義,如果要繼續(xù)加密就得設(shè)計(jì)新的算法,這個(gè)成本實(shí)在太高,所以現(xiàn)代的加密技術(shù)則包含另外一個(gè)元素——密鑰。
密鑰是啥呢,其實(shí)就是一堆參數(shù),現(xiàn)代信息的加密就是把這堆參數(shù)跟明文信息按照一定的算法混到一起,把原始信息整的像亂碼一樣。重新設(shè)計(jì)加密算法不是成本高嗎,與其偷偷摸摸的,不如公開(kāi)加密算法,讓大家都來(lái)用好了,但是加解密雙方得保管好密鑰哦。不過(guò)即使不幸密鑰被泄漏了,重新整個(gè)密鑰就好了,這比重新設(shè)計(jì)算法可容易多了。
說(shuō)完加密技術(shù)中加密算法和密鑰這兩大元素,我們?cè)賮?lái)看看常見(jiàn)的兩種加密:對(duì)稱(chēng)加密和非對(duì)稱(chēng)加密。對(duì)稱(chēng)加密目前比較流行的是AES和3DES,在這種加密方式下,加解密雙方的密鑰是一樣的,雙方都用這個(gè)密鑰來(lái)加密,也用這個(gè)密鑰來(lái)解密的,簡(jiǎn)單粗暴,如果加密要求不是那么高的話(huà),用對(duì)稱(chēng)加密就可以了,因?yàn)榧用芎艽蟪潭壬鲜菫榱吮苊馑矫苄畔⒃诰W(wǎng)絡(luò)上裸奔,信息在網(wǎng)絡(luò)上傳輸通過(guò)的節(jié)點(diǎn)實(shí)在太多,很容易被人中途攔截,雖然對(duì)稱(chēng)加密也是能破解的,不過(guò)票價(jià)還是偏高,而且破解出來(lái)也不一定有啥值回票價(jià)的信息,所以也還算比較安全。
如果有更高的加密要求,就要用到非對(duì)稱(chēng)加密了,比較流行的是RSA加密。為啥又要搞個(gè)非對(duì)稱(chēng)加密呢?這里先從對(duì)稱(chēng)加密的弊端說(shuō)起,對(duì)稱(chēng)加密的密鑰只有一個(gè),加密解密都用它,這就意味著密鑰會(huì)被多方知曉,密鑰泄漏的可能性也越大,一旦泄漏,任何人都能對(duì)數(shù)據(jù)進(jìn)行加解密,如果進(jìn)行多方加密通訊,又不想相同密鑰被太多人知道,則需要針對(duì)不同的通訊方生成不同的密鑰,既復(fù)雜又不環(huán)保。非對(duì)稱(chēng)加密則能比較好的解決這個(gè)問(wèn)題,非對(duì)稱(chēng)加密的密鑰是一對(duì),分別叫做公鑰和私鑰,這兩個(gè)密鑰是不一樣的,而且不可能根據(jù)其中一個(gè)密鑰推導(dǎo)出另一個(gè)密鑰的。公鑰加密的數(shù)據(jù)只有私鑰能解開(kāi),私鑰加密的數(shù)據(jù)只有公鑰能解開(kāi)。例如A創(chuàng)建了一對(duì)非對(duì)稱(chēng)加密的密鑰,A對(duì)外公開(kāi)了其中一個(gè)密鑰稱(chēng)為公鑰,A自己保有的另一個(gè)密鑰稱(chēng)為私鑰,這樣做的好處是:和A通訊的對(duì)象不論一個(gè)還是多個(gè),都只需要使用一個(gè)公鑰加密就好了,而且即使是公鑰加密的數(shù)據(jù)用公鑰也是解密不了的,而私鑰只有A自己有,這樣就不用太擔(dān)心私鑰泄漏的問(wèn)題了。
非對(duì)稱(chēng)加密的另一個(gè)應(yīng)用場(chǎng)景是身份認(rèn)證,如果A擁有私鑰,那么A只要聲明公鑰是自己發(fā)布的,那么如果接收方B收到了一份自稱(chēng)是A發(fā)的密文時(shí),B只需要將A發(fā)布的公鑰嘗試解密一次就可以知道了,如果解開(kāi)了,那么就可以確認(rèn)是A發(fā)的密文,沒(méi)解開(kāi)自然就不是嘍。平時(shí)我們聽(tīng)到的啥數(shù)字簽名,數(shù)字證書(shū)啥的用來(lái)驗(yàn)證身份的其實(shí)就是這玩意兒。
最后,握住你胸前的Token卡,輕哼小龍人的主題曲……
#專(zhuān)欄作家#
給產(chǎn)品經(jīng)理講技術(shù),微信公眾號(hào)(pm_teacher),人人都是產(chǎn)品經(jīng)理專(zhuān)欄作家。資深程序猿,專(zhuān)注客戶(hù)端開(kāi)發(fā)若干年,對(duì)前端、后臺(tái)技術(shù)略懂,熱衷于對(duì)新的科技領(lǐng)域的探索。
本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,不得轉(zhuǎn)載。
- 目前還沒(méi)評(píng)論,等你發(fā)揮!