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