俞志兵
南京市天印高級中學 南京 211151
作者:俞志兵,本科,中學一級教師,長期從事高中信息技術教學工作,任信息技術教研組組長,擅長網站開發。
總的來說,加密有兩種形式:1)對稱加密,加密和解密時使用的是同一個密鑰;2)非對稱加密,加密和解密時將使用不同的密鑰。通常是用公鑰作為加密密鑰,任何人都可以用它來加密信息。私鑰才是用來解密密鑰的,它只能用來對使用其對應的公鑰加密的數據進行解密。對稱加密相對而言速度更快,但由于加密者和解密者都知道這個唯一的密鑰,因此安全性更差一些。非對稱加密則通過密鑰的方法來解決這個問題,由于私鑰永遠不會暴露,所以第三方更加難以破解其加密的信息。由于密鑰的方法需要更長的處理時間,因此通常的方法是使用非對稱密鑰加密機制在因特網上實現對對稱密鑰的加密,這樣就使這個用于加密的密鑰更安全,不會暴露給第三方。
在.NET的命名空間System.Security.Cryptography中提供了幾種算法。可用的非對稱算法包括DSA(Digital Signature Algorithm,數字簽名算法)和RSA(Rivest-Shamir-Adleman算法,它由3個發明者的名字組成:Ronald Rivest、Adi Shamir和Leonard Adleman)兩種。其中DSA只能夠用來對數據進行“簽名”,因此通常用來做驗證,而RSA更加通用。DSA現在是美國政府使用的數字驗證的標準。
.NET框架中可以找到的對稱加密算法包括DES(Data Encryption Standard,數字加密標準)、Triple DES(3DES)、RC2(Ron’s Code或Rivest’s Cipher,都是源于Ronald Rivest)和Rijndael(源于其發明者John Daemem、Vincent Rijman的名字)。DES成為標準已經有一段時間,盡管它也不斷發生變化。3DES和RC2都是DES的變種。3DES是通過對數據進行3次獨立的DES加密,扣除奇偶校驗位,其總的密鑰長度也達到168位。RC2的密鑰長度是可以變化的,最大可以達到128(如果要更長的密鑰,可以使用RC3、RC4等),因此根據密鑰長度不同,可能比DES更脆弱或更強壯。Rijndael是一種完全不同的加密方法,現在已經被接納為新的AES(高級加密標準)。該標準的目標是替代DES。
由于.NET框架中的類是針對數據流進行優化的,因此需要花一些時間來處理數據格式轉換。同樣需要定義一個密鑰以及執行加密或解密操作的初始向量(IV)。需要使用IV應歸究于加密的本性:為一串數據位計算加密值時,將會用到前面一串數據位的加密值。由于在加密開始時并不存在這些值,因此用IV來代替。在實踐中,IV和密鑰都將表示為一個字節的數組,而在DES加密中,其長度是64位(8字節),由于解密算法與加密算法類似,加密需要寫入加密數據的目標數據流,而解密需要一個從中讀取已加密數據的源數據流。
對一個字符串進行加密所需的步驟:將源字符串轉換為一個字節數組;初始化一個加密算法類;使用這個加密算法類來生成一個加密者(encryptor)對象,實現Icrypto-Transform接口,它需要密鑰和IV值;使用加密者對象來初始化一個密文數據流(CryptoStream對象),該數據流還需要知道要加密哪些數據,以及用來寫入加密數據的目標數據流;使用這個密文數據流生成已加密數據,并寫到由前面創建的源字節數組創建的目標內存數據流中;獲取存儲在這個數據流中的字節數據;將這些字節數據轉換成一個字符串。
解密所采用的模式與加密類似:將源字符串轉換成一個字節數組;根據這個字節數組填充內存數據流的值;初始化一個加密算法類;使用加密算法類生成一個解密者(decryptor)對象,實現ICryptoTransform接口,它需要密鑰和IV值;使用解密者對象來初始化一個密文數據流(ICryptoStream)對象,該數據流還需要知道解密什么數據,并需要一個從中讀取已加密數據的源數據流;使用密文數據流來讀取已經解密數據(可以使用StreamReader.ReadToEnd方法來獲取字符串型結果)。
限于篇幅,本文只給出加密方法,讀者可以根據加密方法自己寫出解密方法。
在網站根目錄下,新建文件夾(SecurityLib),在這個文件夾中新建類,命名為StringEncryptor。其Encrypt()方法如下所示:
public static string Encrypt(string sourceData)
{
set key and initialization vector values
byte[] key = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };
byte[] iv = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 };
try
{ convert data to byte array
byte[] sourceDataBytes =
System.Text.ASCIIEncoding.ASCII.GetBytes(sourceData);
get target memory stream
MemoryStream tempStream = new MemoryStream();
get encryptor and encryption stream
DESCryptoServiceProvider encryptor =
new DESCryptoServiceProvider();
CryptoStream encryptionStream =
new CryptoStream(tempStream,
encryptor.CreateEncryptor(key, iv),
CryptoStreamMode.Write);
encrypt data
encryptionStream.Write(sourceDataBytes, 0,
sourceDataBytes.Length);
encryptionStream.FlushFinalBlock();
put data into byte array
byte[] encryptedDataBytes = tempStream.GetBuffer();
convert encrypted data into string
return Convert.ToBase64String(encryptedDataBytes, 0,(int)tempStream.Length);
}
}
1)網站根目錄下新建Web頁面,命名為SecurityTest.asp,做如下編輯:
Enter data to encrypt:
Enter data to decrypt:
2)修改SecurityTest.aspx.cs中的代碼:
using System;
…
using System.Text;
using SecurityLib;
…
protected void processButton_Click(object sender, EventArgs e)
{
string stringToEncrypt = encryptBox.Text;
string stringToDecrypt = decryptBox.Text;
string encryptedString =
StringEncryptor.Encrypt(stringToEncrypt);
if (stringToDecrypt == "")
{
stringToDecrypt = encryptedString;
}
string decryptedString =
StringEncryptor.Decrypt(stringToDecrypt);
StringBuilder sb = new StringBuilder();
sb.Append(“Encrypted data: “);
sb.Append(encryptedString);
sb.Append(“
Decrypted data: “);
sb.Append(decryptedString);
result.Text = sb.ToString();
}
3)在瀏覽器中運行SecurityTest.aspx,在第一個要加密的文本框中輸入“i am yuzhibing”,然后點擊Process按鈕,其結果如圖1所示。

現在絕大部分電子商務網站或平臺,都需要用戶檔案系統,需要用戶編輯客戶詳情,包括信用卡詳情。信用卡中的信息出于安全因素考慮,必須加密后保存到數據層的數據庫中。登錄客戶編輯自己的信息,就需要從數據庫中解密到表示層。
[1]鄭齊心,房大偉,劉云峰.ASP.NET項目開發案例全程實錄[M].2版.北京:清華大學出版社,2011.
[2]趙松濤,陳小龍.Visual Studio 2005+SQL Server2005數據庫應用系統開發[M].北京:電子工業出版社,2007.
[3]Darie C, Watson K. ASP.NET 2.0電子商務開發實戰[M].北京:人民郵電出版社,2007.
主站蜘蛛池模板: 中文字幕久久亚洲一区| 亚洲国模精品一区| 亚洲日韩图片专区第1页| 中文字幕av无码不卡免费 | 在线国产综合一区二区三区| 午夜精品区| 国产精品美女免费视频大全| 欧美日韩成人在线观看 | 亚洲va视频| 人妻精品全国免费视频| 亚洲国产成人麻豆精品| 國產尤物AV尤物在線觀看| 五月婷婷亚洲综合| 久视频免费精品6| 91系列在线观看| 国产亚洲精品在天天在线麻豆 | 9啪在线视频| 成人国产小视频| 青青青视频蜜桃一区二区| 999国产精品永久免费视频精品久久 | yjizz视频最新网站在线| 伊人久久精品无码麻豆精品| 婷婷午夜影院| 国产视频自拍一区| 亚洲综合狠狠| a毛片在线| 欧美亚洲欧美| 国产凹凸一区在线观看视频| 性网站在线观看| 日韩东京热无码人妻| 99久久国产自偷自偷免费一区| 欧美翘臀一区二区三区| 91午夜福利在线观看精品| 免费av一区二区三区在线| 97精品伊人久久大香线蕉| 波多野结衣一二三| 国产网友愉拍精品| 国产噜噜在线视频观看| 免费aa毛片| 人妻精品全国免费视频| 国产日韩精品欧美一区喷| 欧美a在线视频| 欧美人与牲动交a欧美精品| 天堂亚洲网| 亚洲av日韩av制服丝袜| 日本不卡免费高清视频| 97se亚洲综合在线天天| 久久精品无码一区二区国产区| 免费观看无遮挡www的小视频| 亚洲人成色在线观看| 潮喷在线无码白浆| 国产在线观看高清不卡| 欧美色综合网站| 秋霞国产在线| 激情网址在线观看| 日韩av电影一区二区三区四区| 99精品福利视频| 亚洲性一区| 精品国产亚洲人成在线| 亚洲三级影院| 国产又黄又硬又粗| 亚洲日韩AV无码一区二区三区人| 一级成人a毛片免费播放| 国产一区成人| 亚洲有码在线播放| 国产欧美日韩精品综合在线| 视频一区视频二区中文精品| 日本高清免费一本在线观看| 欧美性爱精品一区二区三区 | 亚洲精品欧美重口| 国产精品久久精品| 午夜激情福利视频| 亚洲中文字幕久久精品无码一区| 婷婷亚洲最大| 色综合五月婷婷| 亚洲码一区二区三区| 亚洲青涩在线| 九九热精品视频在线| 国产精品污污在线观看网站| 超清无码一区二区三区| 狠狠色成人综合首页| 伊人久综合|