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