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