淺析基于.NET Web應(yīng)用程序開(kāi)發(fā)的加密技術(shù)

辦公自動(dòng)化中許多數(shù)據(jù)資源依靠網(wǎng)絡(luò)來(lái)遠(yuǎn)程存取,而多數(shù)通訊依賴(lài)于公共網(wǎng)絡(luò),這樣的網(wǎng)絡(luò)環(huán)境并不能保證實(shí)體間的安全通信,數(shù)據(jù)在傳輸過(guò)程可能被其它人讀取或篡改。為了確保應(yīng)用程序的數(shù)據(jù)安全,靈活的使用.net中的數(shù)據(jù)加密技術(shù)對(duì)應(yīng)用程序的內(nèi)容進(jìn)行保護(hù)。

淺析基于.NET Web應(yīng)用程序開(kāi)發(fā)的加密技術(shù)

在客戶(hù)端進(jìn)行的加密技術(shù)
客戶(hù)端進(jìn)行的加密技術(shù)主要是在客戶(hù)端禁止使用鼠標(biāo)右鍵或者是禁止用戶(hù)查看源文件。這主要通過(guò)使用javascript加密達(dá)到最簡(jiǎn)單的客戶(hù)端數(shù)據(jù)保護(hù)??梢酝ㄟ^(guò)以下方法達(dá)到目的:

1、禁止左鍵、右鍵和一些鍵盤(pán)事件以防復(fù)制。
在網(wǎng)頁(yè)HTML代碼的<head></head>標(biāo)志中加入一些代碼,就可以實(shí)現(xiàn)封鎖左鍵、右鍵和一些鍵盤(pán)事件以防復(fù)制從而達(dá)到對(duì)網(wǎng)頁(yè)的簡(jiǎn)單加密要求。

2、禁止“另存為”命令
在目標(biāo)網(wǎng)頁(yè)末尾“</body></html>”的標(biāo)簽前面加上加入如下代碼,當(dāng)執(zhí)行“另存為”命令時(shí),會(huì)彈出“保存網(wǎng)頁(yè)時(shí)出錯(cuò)”的對(duì)話(huà)框,使“另存為”命令不能順利執(zhí)行。

<noscript>

<iframe scr="*.htm"></iframe>

</noscript>

使用.Net自帶加密算法類(lèi)提供的加密服務(wù)來(lái)實(shí)現(xiàn)的數(shù)據(jù)加密
.Net中加密和解密的算法分為對(duì)稱(chēng)算法和不對(duì)稱(chēng)算法。對(duì)稱(chēng)算法在加密和解密數(shù)據(jù)時(shí)使用相同的密鑰和初始化矢量,.NET Framework提供的實(shí)現(xiàn)對(duì)稱(chēng)加密算法類(lèi)有DES、RC2和Rijndael等,主要用于本地文檔或數(shù)據(jù)的加密。不對(duì)稱(chēng)算法則使用兩個(gè)不同的密鑰,公共密鑰在網(wǎng)絡(luò)中傳遞,用于加密數(shù)據(jù),而私有密鑰用于解密數(shù)據(jù)。不對(duì)稱(chēng)算法主要有RSA、DSA等,主要用于網(wǎng)絡(luò)數(shù)據(jù)的加密。

1、使用對(duì)稱(chēng)算法對(duì)本地文檔或數(shù)據(jù)的加密與解密。
對(duì)稱(chēng)算法加密又稱(chēng)為私鑰加密,因?yàn)橥幻荑€既用于加密又用于解密。私鑰加密算法非???,特別適用于對(duì)較大的數(shù)據(jù)流執(zhí)行加密轉(zhuǎn)換。

采用對(duì)稱(chēng)密鑰算法,首先獲取服務(wù)提供者的特定實(shí)例,創(chuàng)建一個(gè)用于加密的新的隨機(jī)密鑰和初始化向量IV。密鑰的大小取決于用來(lái)加密的特定提供程序。IV將幫助算法生成最終加密字符串的數(shù)據(jù)塊。IV用于開(kāi)始第一個(gè)塊的加密。如果不提供IV,那么只要密鑰相同,在字符串之間傳遞的通用數(shù)據(jù)將保持同一種模式。因此,需要使用IV作為加密數(shù)據(jù)的“隨機(jī)”組件。通過(guò)這種方式,只要使用的IV不同,即使密鑰相同,同一個(gè)數(shù)據(jù)也會(huì)被加密成完全不同的值。

2、使用不對(duì)稱(chēng)算法對(duì)網(wǎng)絡(luò)數(shù)據(jù)的加密和解密。
不對(duì)稱(chēng)算法加密也稱(chēng)為公鑰加密,需要用一個(gè)密鑰加密數(shù)據(jù)和另一個(gè)密鑰來(lái)解密數(shù)據(jù)。公鑰加密使用一個(gè)必須對(duì)未經(jīng)授權(quán)的用戶(hù)保密的私鑰和一個(gè)可以對(duì)任何人公開(kāi)的公鑰。用公鑰加密的數(shù)據(jù)只能用私鑰解密,而用私鑰簽名的數(shù)據(jù)只能用公鑰驗(yàn)證。公鑰可以被任何人使用;該密鑰用于加密要發(fā)送到私鑰持有者的數(shù)據(jù)。兩個(gè)密鑰對(duì)于通信會(huì)話(huà)都是唯一的。不對(duì)稱(chēng)算法比對(duì)稱(chēng)算法計(jì)算的花費(fèi)多、速度慢。因此在線(xiàn)對(duì)話(huà)中使用不對(duì)稱(chēng)算法加密對(duì)稱(chēng)密鑰。

3、對(duì)少量數(shù)據(jù)使用的單向散列算法加密
單向散列函數(shù)一般用于產(chǎn)生消息摘要,密鑰加密等,常見(jiàn)的實(shí)現(xiàn)方法有MD5和SHA1兩種。

MD5的的作用是讓大容量信息在用數(shù)字簽名軟件簽署私人密匙前被"壓縮"成一種保密的格式。需要獲得一個(gè)隨機(jī)長(zhǎng)度的信息并產(chǎn)生一個(gè)128位的信息摘要。

SHA1的全稱(chēng)是Secure Hash Algorithm(安全哈希算法),加密哈希函數(shù)將任意長(zhǎng)度的二進(jìn)制字符串映射為固定長(zhǎng)度的小型二進(jìn)制字符串。數(shù)據(jù)的少量更改會(huì)在哈希值中產(chǎn)生不可預(yù)知的大量更改。所以很難從加密后的文字中找到蛛絲馬跡。