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