c#制作加密狗
来源:互联网 发布:域名怎么绑定到服务器 编辑:程序博客网 时间:2024/05/16 18:54
密码写入与读出加密狗 实例说明 在使用加密狗时,需要向加密狗中写入或读取数据。例如,将密码写入或读取加密狗,如何实现呢?运行本例,在文本框中设置密码后,单击【写入】按钮,即可将设置的密码写入加密狗,成功写入后,单击【读出】按钮,即可将写入的密码读出并显示在文本框中。如图13.4所示。 技术要点 在购买加密狗时,厂家通常会附带有开发手册和一张光盘。开发手册中介绍了加密狗的使用方法和开发资料。本例使用赛孚耐信息技术有限公司的加密狗产品,该产品提供了.NET中非托管的类库,来完成加密狗的数据读写功能。下面介绍有关加密狗的类库中的读写函数。 ● DogWrite 函数 该函数将pdogData指向的数据写入加密狗中,从DogAddr地址开始写入,到DogBytes地址停止。 函数声明如下: [DllImport("Win32dll.dll", CharSet = CharSet.Ansi)] public static unsafe extern uint DogWrite(uint idogBytes, uint idogAddr, byte* pdogData); 参数说明如下。 l idogAddr:对软件狗读写操作时用户区中的首地址。取值范围为0~99。 l IdogBytes:对软件狗读写操作时的字节长度。读写时取值范围为1~100,并且与idogAddr之和不能超过100。 l pdogData:指针型变量。指向读写操作或变换的数据缓冲区。 l 返回值:0表示操作成功,其他值是错误码。 ● DogRead函数 该函数从加密狗中的idogAddr开始的存储区读出数据,存入pdogData指定的缓冲区,读出字节数为idogBytes。切记,缓冲区大小要足够长。 函数声明如下: [DllImport("Win32dll.dll", CharSet = CharSet.Ansi)] public static unsafe extern uint DogRead(uint idogBytes, uint idogAddr, byte* pdogData); 参数说明如下。 l idogAddr:对软件狗读写操作时用户区中的首地址。取值范围为0~99。 l idogBytes:对软件狗读写操作时的字节长度。读写时取值范围为1~100,并且与idogAddr之和不能超过100。 l pdogData:指针型变量。指向读写操作或变换的数据缓冲区。 l 返回值:0表示操作成功,其他值是错误码。 注意以下几点。 在使用这个函数之前,必须将随加密狗附带的安装程序安装完整,并将安装目录下的Win32dll.dll文件复制到系统目录下。例如: 在Windows 2003下将安装目录下的“/SafeNet China/SoftDog SDK V3.1/Win32/Win32dll/HighDll/ Win32dll.dll”文件复制到“C:/WINDOWS/system32/”文件夹中。 实现过程 (1)新建一个项目,命名为Ex13_03,默认窗体为Form1。 (2)在Form1窗体中,主要添加两个Button控件,用于执行向加密狗数据的写入与读出数据,添加两个TextBox控件,分别用于填写向加密狗中写入的数据和显示读取加密狗中的数据。 (3)主要程序代码。 设置加密狗类,并且完善加密狗的读写功能,代码如下: [StructLayout(LayoutKind.Sequential)] //这个类用于读写加密狗 public unsafe class Dog { public uint DogBytes, DogAddr; //设置加密狗字节长度和起始地址 public byte[] DogData; //设置数据的长度 public uint Retcode; [DllImport("Win32dll.dll", CharSet = CharSet.Ansi)] public static unsafe extern uint DogRead(uint idogBytes, uint idogAddr, byte* pdogData); [DllImport("Win32dll.dll", CharSet = CharSet.Ansi)] public static unsafe extern uint DogWrite(uint idogBytes, uint idogAddr, byte* pdogData); public unsafe Dog(ushort num) { DogBytes = num; DogData = new byte[DogBytes]; //设置数据的长度 } public unsafe void ReadDog() { fixed (byte* pDogData = &DogData[0]) { Retcode = DogRead(DogBytes, DogAddr, pDogData); //将数据读出加密狗 } } public unsafe void WriteDog() { fixed (byte* pDogData = &DogData[0]) { Retcode = DogWrite(DogBytes, DogAddr, pDogData); //将数据写入加密狗 } } } 调用加密狗类,进行加密狗的读写功能,代码如下: private void button1_Click_1(object sender, EventArgs e) { Dog dog = new Dog(100); dog.DogAddr = 0; dog.DogBytes = 10; string str = textBox1.Text; for (int i = 0; i < str.Length; i++) { dog.DogData[i] = (byte)str[i]; } dog.WriteDog(); MessageBox.Show("密码已成功写入加密狗!", "成功提示!", MessageBoxButtons.OK, MessageBoxIcon.Information); textBox1.ReadOnly = true; button1.Enabled = false; button2.Enabled = true; } private void button2_Click_1(object sender, EventArgs e) { Dog dog = new Dog(100); dog.DogAddr = 0; dog.DogBytes = 10; dog.ReadDog(); if (dog.Retcode == 0) //开始读加密狗数据 { char[] chTemp = new char[textBox1.Text.Length]; for (int i = 0; i < textBox1.Text.Length; i++) { chTemp[i] = (char)dog.DogData[i]; } String str = new String(chTemp); textBox2.Text = str; } else { textBox2.Text = "2:" + dog.Retcode; } textBox1.ReadOnly = false; button2.Enabled = false; button1.Enabled = true; } 注意:本程序所使用的代码为不安全代码,正常编译是无法通过的,那么需要设置开发环境允许运行不安全代码,设置步骤为:在菜单栏中选择“项目”/“属性”/“生成”子菜单,在“生成”选项卡中选中“允许不安全代码”选项即可。 举一反三 根据本实例,读者可以开发以下程序。 利用加密狗加密自己的软件。 利用加密狗设计控制计算机使用的程序。 实例421 使用加密狗进行身份验证 实例说明 在程序开发过程中,对于一些机密的数据,开发人员需要将其有效的保护起来。例如,对于用户的密码,如果从数据库中验证用户密码,很容易被非法人员发现甚至破解。本例实现了利用加密狗进行身份验证。实例运行结果如图13.5所示。 技术要点 本例的关键是从加密狗中读取数据,可以使用ReadDog函数实现。有关该函数的介绍请参考实例“密码写入与读出加密狗”中的“技术要点”部分。 实现过程 (1)新建一个项目,命名为Ex13_03,默认窗体为Form1。 (2)在Form1窗体中,主要添加两个Button控件,用于数据验证和退出程序,添加两个TextBox控件,分别用于输入用户名称和密码。 (3)主要程序代码。 private void button1_Click(object sender, EventArgs e) { Dog dog = new Dog(100); dog.DogAddr = 0; dog.DogBytes = 6; dog.ReadDog(); if (dog.Retcode == 0) { char[] chTemp = new char[6]; for (int i = 0; i < 6; i++) { chTemp[i] = (char)dog.DogData[i]; } String str = new String(chTemp); if (textBox2.Text==str) { MessageBox.Show("OK"); } else { MessageBox.Show("error"); } } } 举一反三 根据本实例,读者可以实现以下功能。 利用加密狗设计加密软件。 使用加密狗控制用户使用权限。
- c#制作加密狗
- C#加密狗程序
- C# 加密
- C#加密
- C#加密
- C#加密
- c# 加密
- c# 加密
- C# 加密
- keytool 加密证书制作
- 利用个人U盘制作简易加密狗
- 用C#开发加密狗程序
- 用C#开发加密狗程序
- 自解密加密程序制作
- 加密棒1.02制作总结
- C#中的加密技术
- c#反编译和加密
- C# Des64加密
- 项目中的一些小东西(慢慢补充)
- lucene 分组统计查询
- VS2005(c#)项目调试问题解决方案集锦
- C++著名程序库的比较和学习经验
- 删除windows文件末尾的^M
- c#制作加密狗
- Java回调函数
- 发现问题,解决问题
- route print解读
- 【Java】Java获取IP地址:request.getRemoteAddr()
- script中的language="javascript"和type="text/javascript"的区别
- linux增加swap大小
- Eucalyptus 中32位与64位说明-关于在32/64位NC中的虚拟机中运行64 /32位 Instance的问题
- std::pair 与 std::make_pair