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