下载首页 | 资讯中心 | 下载分类 | 最近更新 | 排 行 榜 | 国产软件 | 国外软件 | 汉化补丁 |
文章搜索: 分类 关键字 收藏本站设为首页
您的位置:首页网页设计ASP程序 → Microsoft .NET 中的简化加密__教程
Microsoft .NET 中的简化加密__教程
日期:2007-5-20 1:15:08 人气:168     [ ]
上一页 [1] [2] [3] [4] [5] [6] [7] 下一页

' Visual Basic .NET
Private Sub btnEncrypt_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdEncrypt.Click
txtEncrypted.Text = EncryptString(txtOriginal.Text)
End Sub

// C#
private void cmdEncrypt_Click(object sender, System.EventArgs e)
{
txtEncrypted.Text = EncryptString(txtOriginal.Text);
}
Click 事件过程将调用名为 EncryptString() 的方法,从 Original String(原始字符串)文本框中接受值并对其进行加密。然后返回该值并将其放到 Encrypted String(加密字符串)文本框中。下面是 EncryptString() 方法的代码。

' Visual Basic .NET
Private Function EncryptString(ByVal Value As String) _
As String
Dim ct As ICryptoTransform
Dim ms As MemoryStream
Dim cs As CryptoStream
Dim byt() As Byte

ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV)

byt = Encoding.UTF8.GetBytes(Value)

ms = New MemoryStream
cs = New CryptoStream(ms, ct, CryptoStreamMode.Write)
cs.Write(byt, 0, byt.Length)
cs.FlushFinalBlock()

cs.Close()

Return Convert.ToBase64String(ms.ToArray())
End Function

// C#
private string EncryptString(string Value)
{
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;

ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);

byt = Encoding.UTF8.GetBytes(Value);

ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, 0, byt.Length);
cs.FlushFinalBlock();

cs.Close();

return Convert.ToBase64String(ms.ToArray());
}
现在我们分开看一下各行代码并了解这些代码的作用。首先是加密进程的几个变量。

Dim ct As ICryptoTransform
Dim ms As MemoryStream
Dim cs As CryptoStream
Dim byt() As Byte
ICryptoTransform 是一个接口。需要此接口才能在任何服务提供程序上调用 CreateEncryptor 方法,服务提供程序将返回定义该接口的实际 encryptor 对象。

然后需要将原始字符串转换成字节数组。大多数 .NET 加密算法处理的是字节数组而不是字符串。

byt = Encoding.UTF8.GetBytes(Value)
现在可以执行实际的加密了。此进程需要创建一个数据流,用于将加密的字节写入到其中。要使用名为 ms 的 MemoryStream 对象、ICryptoTransform 对象(提供给 CryptoStream 类的构造函数)以及说明您希望在何种模式(读、写等)下创建该类的枚举常数。创建 CryptoStream 对象 cs 后,现在使用 CryptoStream 对象的 Write 方法将数据写入到内存数据流。这就是进行实际加密的方法,加密每个数据块时,数据将被写入 MemoryStream 对象。

ms = New MemoryStream
cs = New CryptoStream(ms, ct, CryptoStreamMode.Write)
cs.Write(byt, 0, byt.Length)
cs.FlushFinalBlock()

cs.Close()
创建 MemoryStream 后,该代码将在 CryptoStream 对象上执行 FlushFinalBlock 方法,以确保所有数据均被写入 MemoryStream 对象。该过程将关闭 CryptoStream 对象。

最后,该过程将内存数据流从字节数组转换回字符串,这样才可以在窗体上的文本框内显示该字符串。可以使用 MemoryStream ToArray() 方法从数据流中获取字节数组,然后调用 Convert.ToBase64String() 方法,该方法接受字节数组输入并使用 Base64 编码方法将该字符串编码为可读内容。

解密数据
加密数据后,有时还需要解密数据。解密数据的过程非常简单,与加密过程相似。您需要提供加密过程中使用的密钥和初始化向量。SymmetricAlgorithm 类的 Key 和 IV 属性被定义为字节数组。因此,设置这些属性之前需要提供您创建的字符串并将其转换成字节数组。下面我们看一下窗体内用于解密字符串的 DecryptString 方法。该方法是从窗体上 Decrypt(解密)按钮的 Click 事件处理程序中调用的。

' Visual Basic .NET
Private Function DecryptString(ByVal Value As String) _
As String
Dim ct As ICryptoTransform
Dim ms As MemoryStream
出处:本站原创 作者:佚名
 阅读排行
01.精美qq空间横幅代码
02.最酷qq个性女生网名
03.最新又有免费QQ秀啦《..
04.巧用透明FlaSh扮靓你的..
05.花之神匠代码(最新代码..
06.最新QQ空间免费导航
07.最新免费个人形象设置..
08.最新qq空间flash代码m..
09.CSS技术结合图像实现动..
10.Photoshop光影魔术师:..
11.QQ音速种子狂刷
12.最新QQ空间透明代码
13.PS实例教程:教你制作结..
14.Photoshop光影魔术师:..
15.制作背景图__教程
16.用Photoshop制作漂亮的..
17.如何获得QQ音速种子
18.≤QQ空间代码≥在日志..
19.网页浮动广告的制作代..
20.用Photoshop制作大红灯..
21.常用CSS
22.Photoshop给靓丽美女打..
 推荐文章
·Photoshop 表现技法之..
·快速将你的相片矢量化..
·PHOTOSHOP制作炽热的太..
·用Photoshop制作美丽的..
·流行杀手的娃娃工厂__..
·打造8号台球__教程
·PHOTOSHOP制作待机MM图..
·用Photoshop帮MM做纹身..
·PHOTOSHOP美眉着色绝招..
·PHOTOSHOP花露的制作_..
·PHOTOSHOP渐变工具的巧..
·PHOTOSHOP手绘奥兰多-..
·高难度抠图两种方法__..
·Photoshop高尔夫球的制..
·Photoshop打造精美玉佩..
Eqxia_COM下载站 版权所有 Copyright© 2001-2005 Www.eqxia.COM, All Rights Reserved.