1. |
启动 Visual Studio .net,并创建一个新的名为 EncryptionTestApp 的 Visual C# 项目。 |
2. |
添加对 Encryption.dll 程序集的引用。 要创建此程序集,必须执行本指南中如何创建加密库中所述的步骤。 |
3. |
将下面的 using 语句添加到 Form1.cs 顶部现有 using 语句的下方。 using Encryption;
using System.Text;
using Microsoft.Win32;
|
4. |
将表 1 中的控件加入 Form1,并如图 1 所示对它们进行排列。
表 1:EncryptionTestApp 控件
标签 |
连接字符串: |
|
文本框 |
|
txtConnectionString |
标签 |
密钥: |
|
文本框 |
|
txtKey |
标签 |
初始化向量: |
|
文本框 |
|
txtInitializationVector |
标签 |
加密字符串 |
|
文本框 |
|
txtEncryptedString |
标签 |
解密字符串 |
|
文本框 |
|
txtDecryptedString |
按钮 |
加密 |
btnEncrypt |
按钮 |
解密 |
btnDecrypt |
按钮 |
写入注册表数据 |
btnWriteRegistryData |
图 1 “加密测试套”对话框 |
5. |
将 txtConnectionString 的 Text 属性设置为 "Server=local; database=pubs; uid=Bob; pwd=Password"
|
6. |
将 txtKey 的 Text 属性设置为 "0123456789012345"
密钥长度为 16 个字节以满足三重 DES 加密算法的要求。 |
7. |
将 Form1 的 Text 属性设置为 "加密测试套"
|
8. |
双击“加密”按钮以创建一个按钮单击事件处理程序,然后将以下代码添加到该事件处理程序中。 try
{
// 创建 Encryptor 对象,将 3DES 指定为
// 加密算法
Encryptor enc = new Encryptor(EncryptionAlgorithm.TripleDes);
// 以字节数组方式获取连接字符串
byte[] plainText = Encoding.ASCII.GetBytes(txtConnectionString.Text);
byte[] key = Encoding.ASCII.GetBytes(txtKey.Text);
// 执行加密
byte[] cipherText = enc.Encrypt(plainText, key);
// 存储初始化向量,解密需要
// 该向量
txtInitializationVector.Text = Encoding.ASCII.GetString(enc.IV);
// 显示加密字符串
txtEncryptedString.Text = Convert.ToBase64String(cipherText);
}
catch(Exception ex)
{
MessageBox.Show("加密时发生异常: " + ex.Message,
"加密测试套");
}
|
9. |
在“设计器”模式下返回到 Form1,然后双击“解密”按钮以创建一个按钮单击事件处理程序。 |
10. |
将下面的代码添加到“解密”按钮事件处理程序。 try
{
// 设置 Decryptor 对象
Decryptor dec = new Decryptor(EncryptionAlgorithm.TripleDes);
// 设置初始化向量
dec.IV = Encoding.ASCII.GetBytes(txtInitializationVector.Text);
byte[] key = Encoding.ASCII.GetBytes(txtKey.Text);
// 执行解密
byte[] plainText = dec.Decrypt(Convert.FromBase64String(
txtEncryptedString.Text),
key);
// 显示解密字符串。
txtDecryptedString.Text = Encoding.ASCII.GetString(plainText);
}
catch(Exception ex)
{
MessageBox.Show("解密时发生异常。 " + ex.Message,
"加密测试套");
}
|
11. |
在“设计器”模式下返回到 Form1,然后双击“写入注册表数据”按钮以创建一个按钮单击事件处理程序。 |
12. |
将下面的代码添加到该事件处理程序中。 // 创建注册表项和命名值
RegistryKey rk = Registry.LocalMachine.OpenSubKey("Software",true);
rk = rk.CreateSubKey("TestApplication");
// 将加密字符串、初始化向量和密钥写入注册表
rk.SetValue("connectionString",txtEncryptedString.Text);
rk.SetValue("initVector",Convert.ToBase64String(
Encoding.ASCII.GetBytes(txtInitializationVector.Text)));
rk.SetValue("key",Convert.ToBase64String(Encoding.ASCII.GetBytes(
txtKey.Text)));
MessageBox.Show("数据已成功写入注册表");
|
13. |
运行该应用程序,然后单击“加密”。 在“加密字符串”字段中就会显示加密的连接字符串。 |
14. |
单击“解密”。 在“解密字符串”字段中就会显示原始的字符串。 |
15. |
单击“写入注册表数据”。 |
16. |
在消息框中,单击“确定”。 |
17. |
运行 regedit.exe 并查看以下注册表项的内容。 HKLM\Software\TestApplication
确认编码值是 connectionString、initVector 和 key 命名值的当前值。 |
18. |
关闭 regedit 和测试套应用程序。 |