這個(gè)題目一寫(xiě)出來(lái),筆者自己也思考了下自己在以前職業(yè)生涯中涉及到的加密解密技術(shù),也思考了自己熟知的公知度高的幾種加密方式。 下面我來(lái)說(shuō)說(shuō)一些理解上的東西。 加密解密中間參與的是一個(gè)算法,有這個(gè)算法規律你才可以將簡(jiǎn)單的語(yǔ)言或者數據轉換成只有了解此算法的人才能看懂才能知道其本身含義的語(yǔ)言或者是數據,你做的這部分工作其實(shí)就是在加密,別人理解的過(guò)程就是解密。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml4588/wps5.jpg 定義:把一段原始數據通過(guò)某種算法處理成另外一種數據(原始數據為明文,處理后的數據為密文)。明文->密文:稱(chēng)之為加密。密文->明文:稱(chēng)之為解密。 從圖中可以了解到對于加密、解密來(lái)講算法是非常關(guān)鍵。但是公知度高的算法都是公開(kāi)的,一旦有人想要破解這個(gè)算法,而且能夠被破解了,則所有使用這個(gè)算法的產(chǎn)品都面臨要報廢、被盜版的危機。而且很多的時(shí)候做過(guò)開(kāi)發(fā)的人就知道,替換一個(gè)算法的成本很大。因此一個(gè)加密出來(lái)的數據本身可靠與否,取決于密鑰,而不是算法,因為密鑰的調換成本比較低。 那么問(wèn)題來(lái)了,什么是密鑰呢? 密鑰是一種參數,它是在明文->密文或密文->明文的算法中輸入的數據。分為對稱(chēng)密鑰,非對稱(chēng)密鑰。 顧名思義,對稱(chēng)加密又稱(chēng)為私鑰加密,發(fā)送方和接收方使用同一個(gè)密鑰區加密解密數據。優(yōu)勢是加解密速度快適合于對大數據進(jìn)行加密。但是密鑰管理困難。 非對稱(chēng)加密:又稱(chēng)公鑰加密。需要使用不同的密鑰來(lái)分別完成加密和解密操作。其中一個(gè)密鑰公開(kāi)發(fā)布,即為公鑰。另一個(gè)由用戶(hù)自己秘密保存,即為私鑰。發(fā)送方用對方的公鑰加密數據,對方用自己的私鑰解密數據。缺點(diǎn)在于加密解密的速度比對稱(chēng)密鑰慢很多。 file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml4588/wps6.png關(guān)于算法這塊現在也就上面提到的對稱(chēng)和非對稱(chēng)兩類(lèi)。在此簡(jiǎn)單闡述下。對稱(chēng)算法,即單向加密算法。 對稱(chēng)算法: file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml4588/wps7.jpg 對稱(chēng)算法的缺點(diǎn)其實(shí)是很明顯的,因為其加密解密使用的都是相同的密鑰,那么在整個(gè)過(guò)程中密鑰存儲的安全性這塊就需要好好考量方案。優(yōu)點(diǎn)前面也說(shuō)過(guò)了,在此不累述。 非對稱(chēng)算法: file:///C:/Users/ADMINI~1/AppData/Local/Temp/ksohtml4588/wps8.jpg 從圖中可以看到加密和解密用到的不是同一個(gè)密鑰,發(fā)送方使用接收方的公鑰進(jìn)行加密,接收方使用與之配合的私鑰進(jìn)行解密,整個(gè)傳送過(guò)程中,加密后的數據只用接收方自己可以解密,因為只有他自己擁有私鑰。 相對來(lái)說(shuō)非對稱(chēng)算法比較安全,但是在實(shí)際使用中總歸是要考慮很多的情況,權衡所有的條件。因為歸根結底沒(méi)有哪種算法是絕對安全絕對完美的,所以讀者可以在自己的產(chǎn)品保密方案中涉及到幾種算法。 舉個(gè)簡(jiǎn)單的例子:你可以把要傳遞給接收方的線(xiàn)路加密對稱(chēng)秘鑰,用對非稱(chēng)算法加密以密文的方式傳遞給接收方,用公鑰/私鑰加密,相對應的就是私鑰/公鑰解密。線(xiàn)路數據加密可以使用對稱(chēng)算法加密數據。 把對稱(chēng)算法和非對稱(chēng)算法糅合到一起,可以保證數據的機密性,來(lái)源的合法性。但是數據本身的完整性又該如何解決?若是有非法截取,然后亂修改一通,破壞數據的完整性接收方又該如何判斷呢? 此問(wèn)題的提出就涉及到了另外一種加密算法,即單項加密算法。準確來(lái)說(shuō),單向加密算法并不是一種加密技術(shù),而是通過(guò)提取數據特征碼,來(lái)驗證數據的完整性。在單項算法的設計上需要考慮的兩個(gè)因素:雪崩現象和定長(cháng)特征。雪崩現象:任何微小的變動(dòng)都可以導致結果發(fā)生巨大的變化。定長(cháng)特征:不論數據本身多長(cháng),提取的特征碼的長(cháng)度都是固定的。 上面提到的這三種算法如果讀者在設計思路中有考慮并糅合在實(shí)際中使用。最終保證數據的完整性,可靠性,機密性以及來(lái)源的合法性。希望這篇整理能對于讀者在理解算法的概念上有些幫助! |