实例解说.Net构架下的加密编程
http://www.yesky.com/SoftChannel/72342380484755456/20031225/1756613.shtml
很久以前就一直想寫一個加密程序,但是一直感到太麻煩而沒有動手,不過在前段時間學習.NET的過程中發現.NET的框架中封裝了與加密有關的類。而且要在.NET中進行加密編程也是很容易的。
現在就對本文使用的加密技術來做個講解。首先我們得知道的是密鑰這個專用名詞。密鑰可以這樣來理解:X+Y=Z。其中X是要被加密的數據,Y就是密鑰,Z是加密后的數據。如果在這個加法中將Y去掉,那嗎就成了X=Z。所以Y在這里就可以被看成一個變量,而密鑰也正是一個變量,當這個變量發生變化后加密的數據也就更著發生變化了。不過在有的資料中會將它稱為向量。
本文所采用的加密方法是被稱為密鑰散列值的方法。此方法是將要加密的數據和密鑰進行組合產生新的加密了的數據。
在.NET中可以說加密所要使用的類全部都集中在System.Security.Cryptography框架中,他包含了多種加密算法,所以我們使用的加密方法也是在System.Security.Cryptography框夾中。
下面我們就來看看如何實現數據的加密。
首先在窗口中添加一個Button,3個Textbox,3個Label控件。將Button的Text屬性設置為"確定"。將3個Label控件的Text屬性設置分別設置為:文字,密鑰,HMACSHA1。3個Textbox的屬性保持默認。添加控件后的圖如下:
現在雙擊Button1在Button1_Click中輸入下面的代碼:
| Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim txt1() As Byte txt1 = System.Text.ASCIIEncoding.ASCII.GetBytes(TextBox1.Text) ’讀取輸入的文字,即要加密的文字。 Dim key(16) As Byte key = System.Text.ASCIIEncoding.ASCII.GetBytes(TextBox2.Text)’讀取密鑰 ’HMACSHA加密 Dim hma As New System.Security.Cryptography.HMACSHA1(key)’聲明加密類,既使用何種加密方法 Dim csstream As New System.Security.Cryptography.CryptoStream(System.IO.Stream.Null, hma, Security.Cryptography.CryptoStreamMode.Write)’進行加密轉換 csstream.Write(txt1, 0, txt1.Length) ’將加密后的數據保存在TXT1這個變量中 ’此時的txt1已經不是先前的要加密的文字,而是被刷新后的已經加密的數據。 csstream.Close() TextBox3.Text = System.Text.ASCIIEncoding.ASCII.GetString(hma.Hash)’顯示加密的文字。 End Sub |
程序說明:在本代碼中我們主要是使用HMACSHA1算法實現了密鑰散列值的加密。從代碼可以看出要在.NET中進行數據的加密其實并不難,關鍵是選擇System.Security.Cryptography中具體算法。
總結:對于加密技術本文并沒設計的太多,其原因是加密技術本身在大學中就是作為單獨的一們學科,何況現在有很數專門的書在討論加密算法,有興趣的讀者可以去看看。本文主要的意圖是告訴大家,在.NET中已經將加密作為框架的一部分,我們可以根據自己的需要進行選擇具體的加密算法。而且在.NET中使用加密編程并不會太難。
加密文字"這一次我絕不放手",密鑰"123"時運行的效果。如圖
加密文字"這一次我絕不放手",密鑰"223"時運行的效果。如圖
加密文字"愛你直到永遠ZHANG RUI RUI",密鑰"223"時運行的效果。如圖
加密文字"愛你直到永遠ZHANG RUI RUI",密鑰"123"時運行的效果。如圖
總結
以上是生活随笔為你收集整理的实例解说.Net构架下的加密编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一位IT從業人員的心路歷程
- 下一篇: 单链表功能大全