信息安全工程实践d

上传人:千****8 文档编号:116740400 上传时间:2019-11-17 格式:DOC 页数:102 大小:5.32MB
返回 下载 相关 举报
信息安全工程实践d_第1页
第1页 / 共102页
信息安全工程实践d_第2页
第2页 / 共102页
信息安全工程实践d_第3页
第3页 / 共102页
信息安全工程实践d_第4页
第4页 / 共102页
信息安全工程实践d_第5页
第5页 / 共102页
点击查看更多>>
资源描述

《信息安全工程实践d》由会员分享,可在线阅读,更多相关《信息安全工程实践d(102页珍藏版)》请在金锄头文库上搜索。

1、信息安全工程实践安全编程基于USBKey的软件授权编程实验【实验内容】了解USBKey的使用和工作原理掌握通过USBKey控制软件启动和加密的简单程序【实验原理】USBKey是一种插在计算机USB口上的软硬件结合的设备,USBKey内置单片机或智能卡芯片,具有一定的存储空间和运算处理能力,使得USBKey具有判断、分析的处理能力,增强了主动的反解密能力。USBKey的内置芯片里包含有专用的加密算法软件,USBKey厂家提供一套USBKey的读写接口(API)给开发商,开发商在开发中通过在软件执行过程中和USBKey交换数据来实现加解密。目前多在USBKey中存储用户的私钥以及数字证书,利用US

2、B Key内置的公钥算法实现对用户身份的认证,同时也可以通过USBKey防止未授权的用户对软件进行复制和破解。【实验环境】运行环境:Microsoft Visual Studio 2005编程语言:C#【实验步骤】一、 加密狗本实验使用的加密狗,是一种类似于U盘的小硬件,是一种防盗版的方式。加密狗就是一种插在计算机并行口上的软硬件结合的加密产品,为多数软件开发商所采用。加密狗一般都有几十或几百字节的非易失性存储空间可供读写,现在较新的加密狗内部还包含了单片机。软件开发者可以通过接口函数和加密狗进行数据交换(即对加密狗进行读写),来检查加密狗是否插在并行口上;或者直接用加密狗附带的工具加密自己E

3、XE文件(俗称包壳)。这样,软件开发者可以在软件中设置多处软件锁,利用加密狗做为钥匙来打开这些锁;如果没插加密狗或加密狗不对应,软件将不能正常执行。加密狗厂家都会提供一套加密狗的读写接口(API)给开发商,厂家卖给开发商的狗都有各自的区别,某个开发商只能操作自己买的加密狗。加密狗通过在软件执行过程中和加密狗交换数据来实现加密的,加密狗内置单片机电路(也称CPU),使得加密狗具有判断、分析的处理能力,增强了主动的反解密能力。这种加密产品称它为“智能型”加密狗。加密狗内置的单片机里包含有专用于加密的算法软件,该软件被写入单片机后,就不能再被读出。这样,就保证了加密狗硬件不能被复制。二、 加密狗使用

4、的简单实例此实例通过加密狗来控制软件的启动。(1) 运行页面如图5.1.11所示为主程序窗口的运行画面,要运行程序,必须先成功启动加密狗。图5.1.11(2) 主要代码:注:把加密狗所提供的DLL文件(本实验为Rockey2.dll)加载到程序的BinDebug目录下。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using S

5、ystem.Runtime.InteropServices;namespace DogTestpublicpartialclassForm1 : Form public Form1() InitializeComponent(); #region引用加密狗所提供的接口 DllImport(Rockey2.dll)staticexternint RY2_Find(); DllImport(Rockey2.dll)staticexternint RY2_Open(int mode, Int32 uid, refInt32 hid); DllImport(Rockey2.dll)staticexte

6、rnvoid RY2_Close(int handle); DllImport(Rockey2.dll)staticexternint RY2_GenUID(int handle, refInt32 uid, String seed, int isProtect); DllImport(Rockey2.dll)staticexternint RY2_Read(int handle, int block_index, StringBuilder buffer512); DllImport(Rockey2.dll)staticexternint RY2_Write(int handle, int

7、block_index, String buffer512); #endregion/启动按钮的事件代码privatevoid Btn_start_Click(object sender, EventArgs e) String strinfo;int ret = 0;Int32 handle = 0;Int32 hid = 0;Int32 uid = 0;String seed, Writebuff;Char cRead = 0;string ReadBuff = newstring(cRead, 512);/查找 ret = RY2_Find();if (ret = 0) listBox1

8、.Items.Add(Not Find Rockey2!);return; listBox1.Items.Add(Find Rockey2 1!);/打开 ret = RY2_Open(0, 0, ref hid);if (ret != 0) strinfo = Err : + handle; listBox1.Items.Add(strinfo);return; handle = ret; strinfo = Rockey2 : + hid; listBox1.Items.Add(strinfo);/取得UID seed = Rockey2; ret = RY2_GenUID(handle,

9、 ref uid, seed, 0); strinfo = Gen Uid: + uid; listBox1.Items.Add(strinfo);/关闭 RY2_Close(handle); strinfo = Close Rockey2!; listBox1.Items.Add(strinfo);/查找,发现 ret = RY2_Find();/打开 ret = RY2_Open(1, uid, ref hid); handle = ret;/写入数据 Writebuff = Welcome to used Rockey2!; ret = RY2_Write(handle, 0, Writ

10、ebuff); strinfo = Write Data: + Welcome to used Rockey2!; listBox1.Items.Add(strinfo);/读取数据StringBuilder retbuff = newStringBuilder(0, 512); ret = RY2_Read(handle, 0, retbuff); strinfo = Read Data: + retbuff.ToString(); listBox1.Items.Add(strinfo);DialogResult dr = MessageBox.Show(加密狗已经成功启动!, xiaoxi

11、, MessageBoxButtons.OK);if (dr = DialogResult.OK) WorkMain work = newWorkMain(); work.Show(); privatevoid Btn_clear_Click(object sender, EventArgs e) /清空按钮的事件代码 listBox1.Items.Clear(); (3) 运行此实例的界面如果没有正确加载加密狗,程序会告诉我们没有发现加密狗,如图5.1.12所示。图5.1.12如果正确加载加密狗,程序会有相应提示,如图5.1.13所示。图5.1.13点击“确定”按钮后,进入工作页面,如图5.

12、1.14所示。图5.1.14【实验思考】根据自己的硬件不同,试编写程序通过加密狗来控制此程序的运行;通过加密狗来控制所编程序的使用人数。利用BouncyCastle API加密编程实验【实验内容】使用BouncyCastleAPI 接口进行编程【实验原理】BouncyCastle 是一种用于Java平台的开放源码的轻量级密码包。它支持大量的密码算法,并提供JCE 1.2.1的实现。因为Bouncy Castle被设计成轻量级的,所以从J2SE 1.4 到J2ME(包括 MIDP)平台,它都可以运行,是在MIDP上运行的唯一完整的密码包。后来也提供C#版本的API。Bouncy Castle A

13、PI功能很强大,对于初学者来说,辨认类之间的关系以及方法参数和返回值的正确类型有一定难度。通常,开发人员必须浏览源代码和测试用例来研究Bouncy Castle API的主要功能。可以从http:/www.bouncycastle.org/csharp/ 网站上可以下载最新的C#版本的DLL类库和源代码。【实验环境】运行环境:Microsoft Visual Studio 2005编程语言:C#【实验步骤】一、 利用Bouncy Castle API编码实现对数据的加解密将其DLL类库,添加到自己的项目中,示例的源代码展示如下:(1) 本例的主页面如图5.1.21所示。图5.1.21(2) 其页面的主要代码为:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号