一琅攘、加密算法簡介
數(shù)據(jù)加密的基本過程就是對原來為明文的文件或數(shù)據(jù)按某種算法進行處理,使其成為不可讀的一段代碼,通常稱為“密文”,使其只能在輸入相應的密鑰之后才能顯示出本來內(nèi)容难裆,通過這樣的途徑來達到保護數(shù)據(jù)不被非法竊取、閱讀的目的镊掖。 該過程的逆過程為解密乃戈,即將該編碼信息轉(zhuǎn)化為其原來數(shù)據(jù)的過程。
二亩进、為什么要使用加密算法
在網(wǎng)絡上傳輸保證數(shù)據(jù)安全有三點:
保密性:確保自己的信息不被任何無關的第三方看到症虑,能看明白。
完整性:通信雙方在實現(xiàn)通信時整個通信報文不會產(chǎn)生信息丟失归薛,如果發(fā)生丟失谍憔,要讓接收端知道。
可用性:通信方任何一方所產(chǎn)生的信息應當對授權實體可用主籍。
很多互聯(lián)網(wǎng)著名的協(xié)議都沒有自己去實現(xiàn)加解密的功能习贫。為了保證上面提到的數(shù)據(jù)安全,所以要使用加密算法千元。
三苫昌、加密算法有哪些
在兩端主機之間進行加密通信,運用到了下面這些密匙算法和協(xié)議
對稱加密
在兩邊主機對數(shù)據(jù)的發(fā)送前和接收后都用同一個密鑰進行加密和解密幸海。它是將原始數(shù)據(jù)分割為固定大小的塊祟身,然后逐個進行加密的奥务。加密的算法有主流的DES、3DES袜硫、AES和一些商業(yè)版加密Blowfish氯葬、Twofish、IDEA父款、RC6溢谤、CAST5。這種加密算法在數(shù)據(jù)傳輸時有密鑰過多憨攒,密鑰分發(fā)困難的缺點世杀。公鑰加密
公鑰加密所用到的密鑰可以分為公鑰和私鑰兩種,其中私鑰是使用者通過工具創(chuàng)建肝集,而公鑰是從私鑰中提取產(chǎn)生瞻坝。使用者要保證私鑰安全秘密存放,而公鑰則是公開給所有人使用的杏瞻。使用公鑰加密的數(shù)據(jù)所刀,只能使用與之配對的私鑰解密,反之亦然捞挥。因為公鑰加密的加解密數(shù)據(jù)比對稱加密的加解密數(shù)據(jù)性能低太多浮创,所以平常應用中都用來做數(shù)字簽名和密鑰交換來使用,一般不用來對較大數(shù)據(jù)進行加密砌函。單向加密
單向加密又稱為不可逆加密算法斩披,在加密過程中不使用密鑰,明文由系統(tǒng)加密處理成密文讹俊,密文無法解密垦沉。一般適合于驗證,在驗證過程中仍劈,重新輸入明文厕倍,并經(jīng)過同樣的加密算法處理,得到相同的密文并被系統(tǒng)重新認證贩疙。廣泛使用于口令加密讹弯。其中單向加密的算法有md5,sha1这溅,sha224组民,sha256,sha384芍躏,sha512等邪乍。密鑰交換
1976 年,Whitfield Diffie 和 Martin Hellman 一起發(fā)明了一個密匙交換方式,被稱為 “迪菲-赫爾曼密鑰交換 Diffie–Hellman key exchange 簡稱 D-H”庇楞。因為使用DH時密碼不在互聯(lián)網(wǎng)傳送榜配,而雙方都能得到一致的密碼,所以DH比較多人用的原因吕晌。
- DH密匙交換過程:
Alice:選擇兩個數(shù) p蛋褥,n 來做模運算,隨機出一個數(shù)x睛驳,
--> p^x%g = B烙心,通過運算生成一個數(shù)B,然后Alice把 p乏沸,n淫茵,B 告訴了Bob。
Bob:隨機出一個數(shù) y
--> p^y%g = A蹬跃,生成數(shù)A匙瘪,Bob將 A 的值告訴了Alice。
現(xiàn)在蝶缀,Alice和Boc開始生成密鑰丹喻,
Alice:key = A ^ x % n
Bob :key = B ^ y % n
通過上面的運算,Alice和Bob生成了他們之間的密匙key翁都。
四碍论、加密算法原理實例講解
假設Alice要和Bob通信,我們來模擬這次通信的加密過程:
加密發(fā)送的過程
- 第一步:Alice現(xiàn)在有數(shù)據(jù)要發(fā)送柄慰,為了把數(shù)據(jù)安全無誤保密的送達Bob鳍悠,Alice先用單向加密算法計算出這段數(shù)據(jù)的特征碼。
- 第二步:Alice用自己的私鑰加密這段特征碼并將結果附加在數(shù)據(jù)后面先煎。
- 第三步:Alice生成一個臨時的對稱密鑰贼涩,并使用這個對稱密鑰加密這整段數(shù)據(jù)巧涧。
- 第四步:Alice獲取到Bob的公鑰薯蝎,使用這個公鑰加密剛才的臨時對稱密鑰,并附加在整段數(shù)據(jù)后面谤绳,接著把加密好的整段數(shù)據(jù)發(fā)送給Bob占锯。
解密的過程
- 第一步:Bob用自己的私鑰去解密這段加密的臨時對稱密鑰
- 第二步:用對稱密鑰去解密整段加密的內(nèi)容
- 第三步:用Alice的公鑰去解密這段特征碼,能解密的話可以確定是Alice發(fā)送的數(shù)據(jù)
- 第四步:Bob用同樣的對稱加密算法缩筛,對這段數(shù)據(jù)計算出特征碼并與解密出來的特征碼進行比較消略,如果兩個特征碼相同,證明這段數(shù)據(jù)是完好無損的瞎抛。