你所需要知道的關(guān)于加密的事

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