數(shù)據(jù)加密可在網(wǎng)絡(luò)OSI七層協(xié)議(OSI是Open System Interconnect的縮寫(xiě),意為開(kāi)放式系統(tǒng)互聯(lián)。國(guó)際標(biāo)準(zhǔn)組織(國(guó)際標(biāo)準(zhǔn)化組織)制定了OSI模型。這個(gè)模型把網(wǎng)絡(luò)通信的工作分為7層,分別是物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層和應(yīng)用層。)的多層上實(shí)現(xiàn)、所以從加密技術(shù)應(yīng)用的邏輯位置看,有三種方式:
①鏈路加密:通常把網(wǎng)絡(luò)層以下的加密叫鏈路加密,主要用于保護(hù)通信節(jié)點(diǎn)間傳輸?shù)臄?shù)據(jù),加解密由置于線路上的密碼設(shè)備實(shí)現(xiàn)。根據(jù)傳遞的數(shù)據(jù)的同步方式又可分為同步通信加密和異步通信加密兩種,同步通信加密又包含字節(jié)同步通信加密和位同步通信加密。
②節(jié)點(diǎn)加密:是對(duì)鏈路加密的改進(jìn)。在協(xié)議傳輸層上進(jìn)行加密,主要是對(duì)源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)之間傳輸數(shù)據(jù)進(jìn)行加密保護(hù),與鏈路加密類似.只是加密算法要結(jié)合在依附于節(jié)點(diǎn)的加密模件中,克服了鏈路加密在節(jié)點(diǎn)處易遭非法存取的缺點(diǎn)。
③端對(duì)端加密:網(wǎng)絡(luò)層以上的加密稱為端對(duì)端加密。是面向網(wǎng)絡(luò)層主體。對(duì)應(yīng)用層的數(shù)據(jù)信息進(jìn)行加密,易于用軟件實(shí)現(xiàn),且成本低,但密鑰管理問(wèn)題困難,主要適合大型網(wǎng)絡(luò)系統(tǒng)中信息在多個(gè)發(fā)方和收方之間傳輸?shù)那闆r。
常見(jiàn)的加密算法基本分為這幾類,
線性散列算法(簽名算法)MD5 SHA1
對(duì)稱性加密算法AES DES
非對(duì)稱性加密算法RSA
MD5是一種被廣泛使用的線性散列算法,可以產(chǎn)生出一個(gè)128位(16字節(jié))的散列值(hash value),用于確保信息傳輸完整一致。
MD5加密之后產(chǎn)生的是一個(gè)固定長(zhǎng)度(32位或者16位)的數(shù)據(jù)
MD5是可以進(jìn)行反向暴力破解的。也就是用很多不同的數(shù)據(jù)進(jìn)行加密后跟已有的加密數(shù)據(jù)進(jìn)行比照。理論上只需數(shù)據(jù)量足夠龐大MD5是可以被破解的。
MD5考慮的是破解的成本(時(shí)間和機(jī)器性能)。假設(shè)破解當(dāng)前的MD5密碼需要目前計(jì)算能力最優(yōu)秀的計(jì)算機(jī)工作100年才能破解完成。那么當(dāng)前的MD5密碼就是安全的。
添加破解成本的方法。
使用一段無(wú)意義且隨機(jī)的私匙進(jìn)行MD5加密會(huì)生成一個(gè)加密串,我們暫且稱之為串1
將要加密的的數(shù)據(jù)跟串1拼接,再進(jìn)行一次MD5,這時(shí)會(huì)生成串2
將串2再次進(jìn)行MD5加密,這時(shí)生成的串3就是我們加密后的數(shù)據(jù)。
解密。MD5不存在解密。只能把數(shù)據(jù)進(jìn)行相同的MD5解決之后跟之前的的加密串進(jìn)行比照。
我們?cè)谧?cè)賬號(hào)時(shí)的密碼一般都是用的MD5加密。
RSA加密:RSA加密算法是一種非對(duì)稱加密算法。在公開(kāi)密鑰加密和電子商業(yè)中RSA被廣泛使用。(這才是正經(jīng)的加密算法)
非對(duì)稱加密算法:非對(duì)稱加密算法需要兩個(gè)密鑰:公開(kāi)密鑰(publickey:簡(jiǎn)稱公鑰)和私有密鑰(privatekey:簡(jiǎn)稱私鑰)。公鑰與私鑰是一對(duì),假如用公鑰對(duì)數(shù)據(jù)進(jìn)行加密,只有用對(duì)應(yīng)的私鑰才能解密。由于加密和解密使用的是兩個(gè)不同的密鑰,所以這種算法叫作非對(duì)稱加密算法。
使用時(shí)都是使用公匙加密使用私匙解密。公匙可以公開(kāi),私匙自己保留。
算法強(qiáng)度復(fù)雜、安全性依賴于算法與密鑰但是因?yàn)槠渌惴◤?fù)雜,而使得加密解密速度沒(méi)有對(duì)稱加密解密的速度快。
通過(guò)公匙加密,使用私匙解密。私匙是通過(guò)公匙計(jì)算生成的。假設(shè)ABC三方之間相互要進(jìn)行加密通信。大家相互之間使用公匙進(jìn)行信息加密,信息讀取時(shí)使用各自對(duì)應(yīng)的私匙進(jìn)行信息解密。
網(wǎng)站客戶輸入的支付密碼會(huì)通過(guò)RSA加密。
DES全稱為Data Encryption Standard,即數(shù)據(jù)加密標(biāo)準(zhǔn),是一種使用密鑰加密的塊算法。
DES算法的入口參數(shù)有三個(gè):Key、Data、Mode。其中Key為7個(gè)字節(jié)共56位,是DES算法的工作密鑰;Data為8個(gè)字節(jié)64位,是要被加密或者被解密的數(shù)據(jù);Mode為DES的工作方式,有兩種:加密或者解密。
AES這個(gè)標(biāo)準(zhǔn)用來(lái)替代原價(jià)的DES。
DES/AES我們合并在一起詳情其用法和特點(diǎn)。
DES/AES是一種對(duì)稱加密方式,加密運(yùn)算、解密運(yùn)算使用的是同樣的密鑰。
使用DES/AES進(jìn)行數(shù)據(jù)交互時(shí)要求雙方都擁有相同的私匙。
破解方法,暴力破解。DES使用56位的密鑰,則可能的密鑰數(shù)量是2的56次方個(gè)。只需計(jì)算足夠強(qiáng)大是可以被破解的。
Base64是一種用64個(gè)字符來(lái)表示任意二進(jìn)制數(shù)據(jù)的方法。base64是一種編碼方式而不是加密算法。只是看上去像是加密而已(嚇唬人)。
base64原理
Base64使用A--Z,a--z,0--9, ,/這64個(gè)字符。
將3個(gè)字節(jié)轉(zhuǎn)換成4個(gè)字節(jié)((3 X 8)=24=(4 X 6))先讀入3個(gè)字節(jié),每讀一個(gè)字節(jié),左移8位,再右移四次,每次6位,這樣就有4個(gè)字節(jié)了。
Response.Write("
-----------MD5加密---------------
");
Response.Write(SDKSecurity.MD5Encrypt("仰天一笑"));
Response.Write("
-----------DES加密---------------
");
Response.Write(SDKSecurity.DESEncrypt("仰天一笑","anson-xu"));
Response.Write("
-----------DES解密---------------
");
Response.Write(SDKSecurity.DESDecrypt("l06JvJ45r/lb9iKzSXl47Q==","anson-xu"));
Response.Write("
-----------AES加密---------------
");
Response.Write(SDKSecurity.AESEncrypt("仰天一笑","ansonxuyu"));
Response.Write("
-----------AES解密---------------
");
Response.Write(SDKSecurity.AESDecrypt("avwKL MO8 zoLHvzk0 TBA==","ansonxuyu"));