隨着互聯網的興起,愈來愈多的信息和資源要經過網絡傳輸完成;然而在這些數據傳輸中總有一些「無關人員」作一些竊聽、盜取、篡改等危害數據安全的行爲,因此咱們要對數據進行加密處理,以保證數據的安全傳輸;算法
因此有了一下幾種加密方式:
安全
1、對稱加密:
網絡
這種算法簡單來講就是 數據的發送方和接收方都必需要有同一種密鑰(加密數據所用到的密鑰),在數據的傳輸中 數據與密鑰都經過加密的方式傳送;
ide
特性:在數據加密中,數據被分紅固定大的塊,逐個加密;加密和解密速度也快;加密
缺陷:由於加密和解密使用同一種密鑰,因此須要發送方和傳送方都要保留密鑰,致使對於保存密鑰的數量也會愈來愈多;密鑰的分發的保密性也過於困難;spa
2、單向加密:資源
這種加密方式就是單純的加密過程,沒法本身進行解密;因此不能用做直接進行加密數據信息。經常使用的算法有兩種:MD5和SHA算法,用這種方法對數據中的某一段進行加密處理,得到一個叫「特徵碼」的東西。 這種「特徵碼」能夠用來肯定原數據真僞性和數據的完整性;
it
特性:定長輸出;雪崩效應(更改原數據中任意一個字節,都會使得特徵碼有大相徑庭的變化)
io
3、公鑰加密算法:
class
這種算法中所用到的密鑰有兩種:私鑰和公鑰(由私鑰抽取生成的)
私鑰的大小:512bit、1024bit、2048bit、4096bit、8192bit、16384bit;
這種加密方式對數據的加密安全等級較高;簡單來講就是使用私鑰加密數據,解密則必須用公鑰來解密;若使用公鑰加密,則必須使用私鑰來解密;
因爲私鑰的大小過大,對於數據的加密所消耗的系統資源和時間也會過多;因此就產生了缺陷;
一般這種加密方式不多用來加密大批量的數據,因此它能夠用來加密如下幾種:
⑴數字簽名的加密
數字簽名是用來讓數據的接收方確認發送方的身份的;
⑵密鑰加密
在對稱加密中的密鑰交換時,能夠用公鑰加密法來加密密鑰;
⑶小段數據的加密
當所須要傳送的數據是少許的狀況下,可使用公鑰加密;
經常使用的公鑰加密算法:
RSA:加密數字簽名
DSA:數字簽名算法;只能實現數字簽名的功能;有時該算法被稱爲DSS;
ELgamal
有了以上幾種加密方式,在數據傳輸中的聯合應用,就能夠達到安全傳輸數據的目的;
從公鑰加密方式可知,傳輸數據雙方都要有對方的公鑰才能夠對數據進行解密;那麼問題來了,這個公鑰如何得到?因此這裏產生了第三方機構,也就是CA(Certification Authority)。
CA是認證身份的中心,是用來確認公鑰擁有者的真實身份的;相似於咱們生活中的×××;
CA機構的工做:
1.通訊雙方交換證書;
2.雙方協商加密算法;
3.雙方驗證證書的真僞;
4.用CA的公鑰解密證書中CA的簽名,能解密說明證書來源可靠
5.用通用的加密算法加密證書,取得特徵值;與解密出來的特徵值比較,若是相同,說明證書完整性可靠;
6.檢查證書的有效期是否在合法時間範圍,若是過時則證書不被承認;
7.檢查證書的主體名稱和此通訊的目標是否可以對應
國際標準化組織(ISO)定義了證書的機構和認證標準,X.509協議標準
證書裏面主要包括:
擁有者的名稱:
擁有者所提交的公鑰
有效期
證書的版本號
證書的序列號
簽發算法ID
簽發CA的名稱
主體名稱
發證者的惟一標識
發證者的數字簽名;
擴展信息;
有了這個機構咱們就能安心的在網絡中傳輸數據了;簡單的總結下數據是如何傳輸的:
1.通訊雙方互相交換證書,併到信任的CA進行證書驗證;
2.發送方使用某種對稱加密算法對數據進行加密;對加密後的數據使用單向加密計算其特徵值;發送方再用本身的私鑰加密此特徵值,以證實數據來源的可靠;發送方使用接收方的證書加密對稱密鑰;
3.接收方在收到數據以後,先使用本身的私鑰解密對稱密鑰;而後使用發送方的公鑰解密特徵值,再利用相同的單向加密算法,從新結算加密數據的特徵值;比較兩個特徵值;若是特徵值一致,則代表數據完整;再用解密出來的對稱密鑰解密出原始數據