为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

加密

2011-06-12 9页 pdf 684KB 54阅读

用户头像

is_791514

暂无简介

举报
加密 深 入 浅 出 软 件 加 密 技 术 LabVIEW开发技术丛书 目 录目 录 引言—献给刚步入加密领域的工程师 1 获取系统的硬件信息 2-3 生成系统ID和激活码 4-6 后记 7 1 引言—献给刚步入加密领域的工程师 自己辛辛苦苦做出来的软件轻轻松松被人盗版了,就像叶圣陶先生的小说《多了三五斗》中丰收 了却高兴不起来的农民一样——闭上眼睛就是天黑。所以,加密是一个软件工程师保护自己辛勤 劳动成果的必备技术(开源软件和有其它盈利模式的软件除外)。 从技术角度来说,...
加密
深 入 浅 出 软 件 加 密 技 术 LabVIEW开发技术丛书 目 录目 录 引言—献给刚步入加密领域的师 1 获取系统的硬件信息 2-3 生成系统ID和激活码 4-6 后记 7 1 引言—献给刚步入加密领域的工程师 自己辛辛苦苦做出来的软件轻轻松松被人盗版了,就像叶圣陶先生的小说《多了三五斗》中丰收 了却高兴不起来的农民一样——闭上眼睛就是天黑。所以,加密是一个软件工程师保护自己辛勤 劳动成果的必备技术(开源软件和有其它盈利模式的软件除外)。 从技术角度来说,天下没有破不了的软件,只是破解难度不一而已。从经济角度来看,只要破解 的成本高于使用正版软件的成本,那么破解的工作便不会有人去做了——除非是纯技术兴趣。 当前市面上比较流行的软件保护技术有:序列号、软件狗和绑定系统硬件信息三种:序列号保护 法常见于网络上的共享软件,破解比较容易。软件狗是一个安装在并口、串口等接口上的硬件电 路,同时有一套使用于各种语言的接口软件和工具软件。复杂的软硬件技术结合在一起使破解非 常难,许多有商业价值的软件一般都用软件狗来保护。绑定系统硬件信息是用户在安装完软件后, 获得一个与系统硬件信息(CPU ID,硬盘序列号等)相关的代码。开发商通过这个软件生成一个激 活码,用户输入激活码后便可正常使用软件了。 相比之下,序列号属于纯软件,破解比较容易;软件狗是软硬结合的方法,破解很难,但需 要购买商业化的软件狗,费用高;绑定系统硬件信息的方式,安全性不错,而且不需要额外软件 狗的费用。 系统硬件信息 系统id 激活码 图 1.1 绑定系统硬件信息技术 下面的章节中,本文将针对绑定系统硬件信息技术,先讲述如何获得系统硬件信息,然后讲述生 成系统 ID 和激活码的方法,最后给出一个完整的范例演示程序。 2 获取系统的硬件信息 到哪里去找硬件信息 一套基于计算机的自动化系统必定包含许多硬件,比如 CPU、硬盘、网卡、GPIB 卡、数据采集 卡、模块化仪器等等。 为了方便管理,厂家会给这些硬件一个唯一的标识号(id),或者序列号(SN),如图 2.1 所示。如 果厂家也提供相关的访问函数,我们就可以获得硬件的唯一标识号。 图 2.1 硬件序列号 获取 NI 硬件序列号 NI 公司硬件设备的序列号可以通过属性节点查知,如图 2.2 所示。 图 2.2 用属性节点获取 NI 硬件序列号 关于数据采集卡,GPIB 卡的硬件信息请参考范例程序 GetDAQSN.vi 和 GetGPIBSN.vi。 3 获取计算机硬件信息 计算机的硬件信息通常包括:CPU ID,硬盘序列号,MAC 地址和 BIOS 信息。这些信息由于涉 及硬件访问,需要调用许多底层函数,具体技术细节请参考 Skyremember 在 CSDN 发的文章 《获取网卡 MAC、硬盘序列号、CPU ID、BIOS 编号》。本文将获取硬件信息的函数做成了 GetHWInfo.dll,方便在 LabVIEW 下调用,如图 2.3 所示。 图 2.3 Get CPU ID 其余硬件信息,请参考范例程序 GetBIOSInfo.vi,GetHDDSN.vi 和 GetMAC.vi 4 生成系统 ID 和激活码 当获取系统硬件信息后,下一步就是生成系统 ID 和激活码。从理论上来说,生成系统 ID 就是找 出一个算法 F1,使得 SystemID = F1 (HardwareInfo);生成激活码就是找出一个算法 F2,使得 ActivationCode = F2 (SystemID)。激活的过程就是找出一个算法 F3,使得 SystemID = F3 (ActivationCode),或者找出两个算法 F3+F4,使得 F3(SystemID) = F4(ActivationCode)。 最后激活过程的算法越复杂,其破解难度越高。在计算机行业,已经有许多成熟的加密解密算法 了,大家可以根据具体需要选用。 本文为了大家理解方便,将采用简单且直观的加密解密算法。 生成系统 ID 在数学中,有很多可逆的算法,比如乘和除,傅里叶变换和反傅里叶变换,交织和节交织,调制 和解调等等。选用可逆算法可以降低激活算法的难度,当然,如果加密算法功底深厚的话, 可以选用不可逆的算法。 由于硬件信息大多数由大写字母和数字组成,本文设计的可逆算法思路是:以十迚制数 69 为对 称点,找出硬件信息字符的镜像字符,比如 0 的镜像字符为 Z,由此形成的字符串作为系统 ID, 如图 3.1 所示: 图 3.1 生成系统 ID 通过该算法,由 NI 硬件序列号 EAB2F3 生成的系统 ID 为 EIHXDW,如图 3.2 所示。 5 图 3.2 系统 ID 当然,我们还可以把集中算法混合在一起,构成更加复杂的算法。 生成 USB-Key 激活码 给客户激活码的方式有很多种,本文推荐将激活码以二迚制流的方式写入 U 盘,以 USB-Key 的形式给客户。系统在运行时,USB-Key 必须存在,否则系统不能运行。 本文算法的设计思路是:先把 SystemID 转换为二迚制流,然后以 code.act 文件名(文件名可自 取)保存到 U 盘,如图 3.3 所示。当然,可以增加一些使二迚制流复杂化的算法,比如交织,那 么在解算二迚制流的时候,就需要增加对应的解算算法,比如解交织。 图 3.3 USB-Key 形式的激活码 做好了 USB-Key 形式的激活码后,就可以把这个 USB-Key 交付给客户了。 检测 USB-Key 本文检测 USB-Key 的设计思路是:首先需要把二迚制流读出,然后恢复出 SystemID,并与当 前系统硬件的信息做比较,如所示。 6 图 3.4 Check Dongle 完整加密程序演示 本文所有的代码包含在随附的演示程序中 Encryption.lvproj,如图 3.5 所示。 图 3.5 Encryption.lvproj 在运行 Demo_GenerateUSBKey.vi 程序时,需要先根据需求调用相应的硬件信息函数,然后制 作 USB-Key。制作好 USB-Key 后,再运行 Demo_CheckDongle.vi 即可。 7 后记 “I hear and I forget; I see and I remember; I do and I understand.” 眼见为实,耳听为虚,仸何事都要亲自付以行动才能真真正正的理解。在 LabVIEW 这样一个非 常适合工程师和科学家的平台上,多尝试,多实践是工程能力增长的不二法门。 拙作肯定存在不少问题,有仸何问题,可以给我 Email: jing.zhang.zju@gmail.com,真心希望能 与大家一起分享一起讨论。
/
本文档为【加密】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索