信息安全工程实践.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信息安全工程实践

信息安全工程实践 安全编程 基于USBKey的软件授权编程实验 【实验内容】 了解USBKey的使用和工作原理 掌握通过USBKey控制软件启动和加密的简单程序 【实验原理】 USBKey是一种插在计算机USB口上的软硬件结合的设备,USBKey内置单片机或智能卡芯片,具有一定的存储空间和运算处理能力,使得USBKey具有判断、分析的处理能力,增强了主动的反解密能力。USBKey的内置芯片里包含有专用的加密算法软件,USBKey厂家提供一套USBKey的读写接口(API)给开发商,开发商在开发中通过在软件执行过程中和USBKey交换数据来实现加解密。目前多在USBKey中存储用户的私钥以及数字证书,利用USB Key内置的公钥算法实现对用户身份的认证,同时也可以通过USBKey防止未授权的用户对软件进行复制和破解。 【实验环境】 运行环境:Microsoft Visual Studio 2005 编程语言:C# 【实验步骤】 加密狗 本实验使用的加密狗,是一种类似于U盘的小硬件,是一种防盗版的方式。 加密狗就是一种插在计算机并行口上的软硬件结合的加密产品,为多数软件开发商所采用。加密狗一般都有几十或几百字节的非易失性存储空间可供读写,现在较新的加密狗内部还包含了单片机。软件开发者可以通过接口函数和加密狗进行数据交换(即对加密狗进行读写),来检查加密狗是否插在并行口上;或者直接用加密狗附带的工具加密自己EXE文件(俗称包壳)。这样,软件开发者可以在软件中设置多处软件锁,利用加密狗做为钥匙来打开这些锁;如果没插加密狗或加密狗不对应,软件将不能正常执行。 加密狗厂家都会提供一套加密狗的读写接口(API)给开发商,厂家卖给开发商的狗都有各自的区别,某个开发商只能操作自己买的加密狗。加密狗通过在软件执行过程中和加密狗交换数据来实现加密的,加密狗内置单片机电路(也称CPU),使得加密狗具有判断、分析的处理能力,增强了主动的反解密能力。这种加密产品称它为“智能型”加密狗。加密狗内置的单片机里包含有专用于加密的算法软件,该软件被写入单片机后,就不能再被读出。这样,就保证了加密狗硬件不能被复制。 加密狗使用的简单实例 此实例通过加密狗来控制软件的启动。 运行页面 如图5.1.11所示为主程序窗口的运行画面,要运行程序,必须先成功启动加密狗。 图5.1.11 主要代码: 注:把加密狗所提供的DLL文件(本实验为Rockey2.dll)加载到程序的\Bin\Debug\目录下。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace DogTest { publicpartialclassForm1 : 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)] staticexternvoid 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 block_index, String buffer512); #endregion //启动按钮的事件代码

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档