這個題目一寫出來,筆者自己也思考了下自己在以前職業(yè)生涯中涉及到的加密解密技術(shù)间影,也思考了自己熟知的公知度高的幾種加密方式。
下面我來說說一些理解上的東西。
加密解密中間參與的是一個算法腋粥,有這個算法規(guī)律你才可以將簡單的語言或者數(shù)據(jù)轉(zhuǎn)換成只有了解此算法的人才能看懂才能知道其本身含義的語言或者是數(shù)據(jù),你做的這部分工作其實就是在加密架曹,別人理解的過程就是解密灯抛。
定義:把一段原始數(shù)據(jù)通過某種算法處理成另外一種數(shù)據(jù)(原始數(shù)據(jù)為明文,處理后的數(shù)據(jù)為密文)音瓷。明文->密文:稱之為加密对嚼。密文->明文:稱之為解密。
從圖中可以了解到對于加密绳慎、解密來講算法是非常關(guān)鍵纵竖。但是公知度高的算法都是公開的漠烧,一旦有人想要破解這個算法,而且能夠被破解了靡砌,則所有使用這個算法的產(chǎn)品都面臨要報廢已脓、被盜版的危機。而且很多的時候做過開發(fā)的人就知道通殃,替換一個算法的成本很大度液。因此一個加密出來的數(shù)據(jù)本身可靠與否,取決于密鑰画舌,而不是算法堕担,因為密鑰的調(diào)換成本比較低。
那么問題來了曲聂,什么是密鑰呢霹购?
密鑰是一種參數(shù),它是在明文->密文或密文->明文的算法中輸入的數(shù)據(jù)朋腋。分為對稱密鑰齐疙,非對稱密鑰。
顧名思義,對稱加密又稱為私鑰加密旭咽,發(fā)送方和接收方使用同一個密鑰區(qū)加密解密數(shù)據(jù)贞奋。優(yōu)勢是加解密速度快適合于對大數(shù)據(jù)進行加密。但是密鑰管理困難穷绵。
非對稱加密:又稱公鑰加密忆矛。需要使用不同的密鑰來分別完成加密和解密操作。其中一個密鑰公開發(fā)布请垛,即為公鑰催训。另一個由用戶自己秘密保存,即為私鑰宗收。發(fā)送方用對方的公鑰加密數(shù)據(jù)漫拭,對方用自己的私鑰解密數(shù)據(jù)。缺點在于加密解密的速度比對稱密鑰慢很多混稽。
關(guān)于算法這塊現(xiàn)在也就上面提到的對稱和非對稱兩類采驻。在此簡單闡述下。對稱算法匈勋,即單向加密算法礼旅。
對稱算法:
對稱算法的缺點其實是很明顯的,因為其加密解密使用的都是相同的密鑰洽洁,那么在整個過程中密鑰存儲的安全性這塊就需要好好考量方案痘系。優(yōu)點前面也說過了,在此不累述饿自。
非對稱算法:
從圖中可以看到加密和解密用到的不是同一個密鑰汰翠,發(fā)送方使用接收方的公鑰進行加密龄坪,接收方使用與之配合的私鑰進行解密,整個傳送過程中复唤,加密后的數(shù)據(jù)只用接收方自己可以解密健田,因為只有他自己擁有私鑰。
相對來說非對稱算法比較安全佛纫,但是在實際使用中總歸是要考慮很多的情況妓局,權(quán)衡所有的條件。因為歸根結(jié)底沒有哪種算法是絕對安全絕對完美的呈宇,所以讀者可以在自己的產(chǎn)品保密方案中涉及到幾種算法好爬。
舉個簡單的例子:你可以把要傳遞給接收方的線路加密對稱秘鑰,用對非稱算法加密以密文的方式傳遞給接收方攒盈,用公鑰/私鑰加密抵拘,相對應(yīng)的就是私鑰/公鑰解密哎榴。線路數(shù)據(jù)加密可以使用對稱算法加密數(shù)據(jù)型豁。
把對稱算法和非對稱算法糅合到一起,可以保證數(shù)據(jù)的機密性尚蝌,來源的合法性迎变。但是數(shù)據(jù)本身的完整性又該如何解決?若是有非法截取飘言,然后亂修改一通衣形,破壞數(shù)據(jù)的完整性接收方又該如何判斷呢?
此問題的提出就涉及到了另外一種加密算法姿鸿,即單項加密算法谆吴。準(zhǔn)確來說,單向加密算法并不是一種加密技術(shù)苛预,而是通過提取數(shù)據(jù)特征碼句狼,來驗證數(shù)據(jù)的完整性。在單項算法的設(shè)計上需要考慮的兩個因素:雪崩現(xiàn)象和定長特征热某。雪崩現(xiàn)象:任何微小的變動都可以導(dǎo)致結(jié)果發(fā)生巨大的變化腻菇。定長特征:不論數(shù)據(jù)本身多長,提取的特征碼的長度都是固定的昔馋。
上面提到的這三種算法如果讀者在設(shè)計思路中有考慮并糅合在實際中使用筹吐。最終保證數(shù)據(jù)的完整性,可靠性秘遏,機密性以及來源的合法性丘薛。希望這篇整理能對于讀者在理解算法的概念上有些幫助!