999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

解密.NET框架中的加密與解密

2012-09-10 03:34:18俞志兵
中國教育技術裝備 2012年28期
關鍵詞:方法

俞志兵

南京市天印高級中學 南京 211151

作者:俞志兵,本科,中學一級教師,長期從事高中信息技術教學工作,任信息技術教研組組長,擅長網站開發。

1.NET中加密算法的形式及其概況

總的來說,加密有兩種形式: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。

2 對加密、解密算法的步驟描述

由于.NET框架中的類是針對數據流進行優化的,因此需要花一些時間來處理數據格式轉換。同樣需要定義一個密鑰以及執行加密或解密操作的初始向量(IV)。需要使用IV應歸究于加密的本性:為一串數據位計算加密值時,將會用到前面一串數據位的加密值。由于在加密開始時并不存在這些值,因此用IV來代替。在實踐中,IV和密鑰都將表示為一個字節的數組,而在DES加密中,其長度是64位(8字節),由于解密算法與加密算法類似,加密需要寫入加密數據的目標數據流,而解密需要一個從中讀取已加密數據的源數據流。

對一個字符串進行加密所需的步驟:將源字符串轉換為一個字節數組;初始化一個加密算法類;使用這個加密算法類來生成一個加密者(encryptor)對象,實現Icrypto-Transform接口,它需要密鑰和IV值;使用加密者對象來初始化一個密文數據流(CryptoStream對象),該數據流還需要知道要加密哪些數據,以及用來寫入加密數據的目標數據流;使用這個密文數據流生成已加密數據,并寫到由前面創建的源字節數組創建的目標內存數據流中;獲取存儲在這個數據流中的字節數據;將這些字節數據轉換成一個字符串。

解密所采用的模式與加密類似:將源字符串轉換成一個字節數組;根據這個字節數組填充內存數據流的值;初始化一個加密算法類;使用加密算法類生成一個解密者(decryptor)對象,實現ICryptoTransform接口,它需要密鑰和IV值;使用解密者對象來初始化一個密文數據流(ICryptoStream)對象,該數據流還需要知道解密什么數據,并需要一個從中讀取已加密數據的源數據流;使用密文數據流來讀取已經解密數據(可以使用StreamReader.ReadToEnd方法來獲取字符串型結果)。

3 根據加密算法寫出加密方法

限于篇幅,本文只給出加密方法,讀者可以根據加密方法自己寫出解密方法。

在網站根目錄下,新建文件夾(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);

}

}

4 加密與解密在.NET中的測試

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所示。

5 加密與解密在實踐中的應用

現在絕大部分電子商務網站或平臺,都需要用戶檔案系統,需要用戶編輯客戶詳情,包括信用卡詳情。信用卡中的信息出于安全因素考慮,必須加密后保存到數據層的數據庫中。登錄客戶編輯自己的信息,就需要從數據庫中解密到表示層。

[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.

猜你喜歡
方法
中醫特有的急救方法
中老年保健(2021年9期)2021-08-24 03:52:04
高中數學教學改革的方法
河北畫報(2021年2期)2021-05-25 02:07:46
化學反應多變幻 “虛擬”方法幫大忙
變快的方法
兒童繪本(2020年5期)2020-04-07 17:46:30
學習方法
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
最有效的簡單方法
山東青年(2016年1期)2016-02-28 14:25:23
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 国产精品短篇二区| 丝袜亚洲综合| 8090成人午夜精品| 成人在线第一页| 免费av一区二区三区在线| 特黄日韩免费一区二区三区| 一本色道久久88| 欧美人与牲动交a欧美精品| 欧美在线视频a| 青青草原国产一区二区| 亚洲欧美成人网| 亚洲永久免费网站| 午夜视频在线观看区二区| 午夜视频www| 亚洲男人在线| 国产成人精品亚洲日本对白优播| 欧洲高清无码在线| av大片在线无码免费| 国产手机在线ΑⅤ片无码观看| 制服无码网站| av天堂最新版在线| 啦啦啦网站在线观看a毛片 | av在线人妻熟妇| 新SSS无码手机在线观看| 99国产精品一区二区| 98超碰在线观看| 91无码网站| 无码中文字幕乱码免费2| 国产激爽爽爽大片在线观看| 免费国产黄线在线观看| 思思99思思久久最新精品| 亚洲首页国产精品丝袜| 国产黄色片在线看| jizz亚洲高清在线观看| 日韩黄色在线| 国产jizz| 美女一级毛片无遮挡内谢| 国产成人精品视频一区二区电影| 国产青青草视频| 波多野结衣国产精品| 成人午夜视频免费看欧美| 国产欧美日本在线观看| 国产特级毛片aaaaaaa高清| 国产真实二区一区在线亚洲| 色成人综合| 国产精品人成在线播放| 亚洲第一区在线| 日韩精品专区免费无码aⅴ | 黄色福利在线| 久久亚洲国产一区二区| 国产精品国产三级国产专业不| 风韵丰满熟妇啪啪区老熟熟女| 99视频有精品视频免费观看| 日本欧美在线观看| 国产成人久久综合777777麻豆| 色综合色国产热无码一| 国产精品视频3p| 日韩精品毛片| 亚洲视频色图| 日韩精品无码一级毛片免费| 亚洲男人的天堂视频| 国产精品女熟高潮视频| 午夜精品久久久久久久2023| a天堂视频| 在线免费亚洲无码视频| 成人午夜网址| 99视频精品在线观看| 午夜一级做a爰片久久毛片| 欧美第一页在线| 日韩成人高清无码| 亚洲日本韩在线观看| 亚洲日韩精品欧美中文字幕| 99偷拍视频精品一区二区| 亚洲天堂日本| 国产成年女人特黄特色大片免费| 无码国产偷倩在线播放老年人 | 亚洲免费黄色网| 91国语视频| 欧美亚洲国产一区| 中文字幕亚洲专区第19页| 亚洲日韩在线满18点击进入| 欧美成人在线免费|