數據加密可(ke)在網絡OSI七層協議(OSI是(shi)Open System Interconnect的縮寫,意為開放式系統互聯。國(guo)際標準組織(zhi)(國(guo)際標準化組織(zhi))制定了(le)OSI模(mo)型。這個模(mo)型把網絡通信的工作分為7層,分(fen)別是物理層、數據鏈(lian)路(lu)層、網絡層、傳輸層、會話(hua)層、表示層和應(ying)用(yong)層。)的(de)多層上實現、所以(yi)從加密(mi)技術應用的(de)邏輯位置看,有三種方(fang)式:
①鏈路(lu)加(jia)密(mi)(mi):通(tong)(tong)(tong)(tong)常(chang)把(ba)網絡層以下的(de)(de)加(jia)密(mi)(mi)叫(jiao)鏈路(lu)加(jia)密(mi)(mi),主要用于保護通(tong)(tong)(tong)(tong)信(xin)節(jie)點(dian)間(jian)傳輸的(de)(de)數據,加(jia)解(jie)密(mi)(mi)由置于線路(lu)上的(de)(de)密(mi)(mi)碼設備實(shi)現。根據傳遞的(de)(de)數據的(de)(de)同步(bu)方(fang)式又可(ke)分(fen)為同步(bu)通(tong)(tong)(tong)(tong)信(xin)加(jia)密(mi)(mi)和異(yi)步(bu)通(tong)(tong)(tong)(tong)信(xin)加(jia)密(mi)(mi)兩種,同步(bu)通(tong)(tong)(tong)(tong)信(xin)加(jia)密(mi)(mi)又包含(han)字節(jie)同步(bu)通(tong)(tong)(tong)(tong)信(xin)加(jia)密(mi)(mi)和位(wei)同步(bu)通(tong)(tong)(tong)(tong)信(xin)加(jia)密(mi)(mi)。
②節點加密:是對鏈路加密的改進。在協議傳輸層上進行加密,主要是對源節點和目標節點之間傳輸數據進行加密保護,與鏈路加密類似.只(zhi)是加密算(suan)法要結合在(zai)依附于節點的加密模件中,克服了鏈路加密在(zai)節點處(chu)易(yi)遭非法存取的缺點。
③端對(dui)端加(jia)密:網絡(luo)層(ceng)以上(shang)的(de)(de)(de)加(jia)密稱為端對(dui)端加(jia)密。是面向(xiang)網絡(luo)層(ceng)主體(ti)。對(dui)應用層(ceng)的(de)(de)(de)數據(ju)信息(xi)進行加(jia)密,易于用軟件實現,且成本低,但密鑰(yao)管理問題困(kun)難,主要適(shi)合大型網絡(luo)系統中信息(xi)在多個發方(fang)和收方(fang)之間(jian)傳(chuan)輸(shu)的(de)(de)(de)情況。
常見的加密算(suan)法(fa)基本分(fen)為(wei)這幾類,
線(xian)性散列算(suan)法(fa)(簽名算(suan)法(fa))MD5 SHA1
對(dui)稱性加密算法(fa)AES DES
非對稱性加密算法RSA
MD5是一種被廣泛使(shi)用的線性(xing)散列(lie)算法,可以(yi)產生出一個128位(wei)(16字節)的散列值(hash value),用于(yu)確保信息傳輸完整一致。
MD5加密之后產生的是一個固定(ding)長度(32位(wei)或者16位(wei))的數據
MD5是可(ke)以進行反向暴力破解的(de)。也就是用很多不同的(de)數(shu)(shu)據(ju)進行加(jia)密后跟已有的(de)加(jia)密數(shu)(shu)據(ju)進行比照。理(li)論上只需數(shu)(shu)據(ju)量足夠龐大MD5是可以被破(po)解(jie)的(de)。
MD5考慮的是破(po)(po)解(jie)(jie)的成(cheng)本(時間和(he)機器性(xing)能(neng))。假設破(po)(po)解(jie)(jie)當前的MD5密碼需要目(mu)前計算能力最優秀的計算機工作100年才(cai)能破解完成。那么當前(qian)的(de)MD5密碼就是(shi)安(an)全的。
添加破解成(cheng)本的方法。
使用一段無意義且隨機的私匙進行MD5加密會生成一個加密串,我們暫且稱之(zhi)為串1
將(jiang)要(yao)加密的的數(shu)據(ju)跟串1拼接,再(zai)進行一次MD5,這時會生成串2
將串2再次進行(xing)MD5加(jia)密,這時(shi)生成的串3就是我們加密后的數據。
解密(mi)。MD5不存在解密。只(zhi)能把(ba)數據進(jin)行相同的MD5解決之(zhi)(zhi)后跟(gen)之(zhi)(zhi)前的的加密串進行比照。
我們(men)在注冊賬(zhang)號(hao)時的密碼一般都是用的MD5加密。
RSA加密(mi):RSA加密(mi)算(suan)法是一種非對稱(cheng)加密(mi)算(suan)法。在公(gong)開(kai)密(mi)鑰加密(mi)和電(dian)子商業中RSA被廣(guang)泛使(shi)用(yong)。(這才是正經的加密算法(fa))
非對稱加密(mi)算法(fa):非對稱加密(mi)算法(fa)需要兩個密(mi)鑰:公開密(mi)鑰(publickey:簡(jian)稱公鑰(yao))和私有密鑰(yao)(privatekey:簡稱(cheng)私(si)鑰(yao)(yao)(yao))。公鑰(yao)(yao)(yao)與私(si)鑰(yao)(yao)(yao)是一對,假如(ru)用(yong)公鑰(yao)(yao)(yao)對數據(ju)進行加密(mi),只有(you)用(yong)對應的私(si)鑰(yao)(yao)(yao)才能(neng)解密(mi)。由于加密(mi)和解密(mi)使(shi)用(yong)的是兩(liang)個不同(tong)的密(mi)鑰(yao)(yao)(yao),所以(yi)這種算法叫作非對稱(cheng)加密(mi)算法。
使用時都是使用公匙加密(mi)使用私(si)匙解密(mi)。公匙可以公開,私(si)匙自己(ji)保留(liu)。
算法(fa)強度(du)(du)復雜、安全性依賴于算法(fa)與密鑰但是(shi)因為其算法(fa)復雜,而使得加密解密速(su)度(du)(du)沒有(you)對稱加密解密的速(su)度(du)(du)快。
通過(guo)公(gong)匙加(jia)密,使用(yong)私匙解密。私匙是通過(guo)公(gong)匙計算生成(cheng)的。假設ABC三方之間相互要進(jin)行加密通信(xin)。大家(jia)相互之間使(shi)用(yong)公匙進(jin)行信(xin)息(xi)加密,信(xin)息(xi)讀取(qu)時使(shi)用(yong)各自對應的(de)私匙進(jin)行信(xin)息(xi)解密。
網站客戶輸入的支付密碼會通過RSA加密。
DES全稱為Data Encryption Standard,即數據加密(mi)標準,是一種使用密(mi)鑰加密(mi)的塊(kuai)算(suan)法。
DES算法的(de)入口(kou)參數有三個:Key、Data、Mode。其中Key為7個字節共56位,是(shi)DES算法的工作密鑰;Data為8個字節64位(wei),是要(yao)被加密或者(zhe)被解密的數(shu)據;Mode為DES的工作(zuo)方式,有兩種:加密(mi)或者解密(mi)。
AES這個(ge)標準用來替代原價的DES。
DES/AES我們合并(bing)在一起詳情(qing)其(qi)用(yong)法和特點。
DES/AES是(shi)一種對稱加密方式,加密運算、解密運算使用的(de)是(shi)同樣的(de)密鑰(yao)。
使用DES/AES進行數據交(jiao)互時要(yao)求(qiu)雙方都擁有相同的(de)私匙。
破(po)(po)解方法,暴力(li)破(po)(po)解。DES使用56位的密鑰,則可能的密鑰數(shu)量(liang)是2的56次方個。只需計算足(zu)夠強(qiang)大是可以被破解的(de)。
Base64是一(yi)種用64個字符來表(biao)示任意二進制數據(ju)的方(fang)法。base64是一(yi)種編(bian)碼方式而不(bu)是加(jia)密算法。只是看上去像(xiang)是加(jia)密而已(嚇(xia)唬人)。
base64原理
Base64使用A--Z,a--z,0--9,+,/這64個字符。
將3個字節轉換(huan)成4個字節((3 X 8)=24=(4 X 6))先讀入3個字(zi)節,每讀一個字(zi)節,左移8位,再右移(yi)四次,每次6位,這樣就(jiu)有4個字節了。
Response.Write("
-----------MD5加密---------------
");
Response.Write(SDKSecurity.MD5Encrypt("仰(yang)天(tian)一笑"));
Response.Write("
-----------DES加密(mi)---------------
");
Response.Write(SDKSecurity.DESEncrypt("仰天一笑(xiao)","anson-xu"));
Response.Write("
-----------DES解密(mi)---------------
");
Response.Write(SDKSecurity.DESDecrypt("l06JvJ45r/lb9iKzSXl47Q==","anson-xu"));
Response.Write("
-----------AES加密---------------
");
Response.Write(SDKSecurity.AESEncrypt("仰天一笑(xiao)","ansonxuyu"));
Response.Write("
-----------AES解(jie)密---------------
");
Response.Write(SDKSecurity.AESDecrypt("avwKL+MO8+zoLHvzk0+TBA==","ansonxuyu"));