公司前一段时间在研究加密狗,即使用硬件技术加密软件。对于加密软件我也有自己的一些想法,今天和大家来聊聊!
首先来简单介绍一下加密技术,主要包括算法加密和密匙加密。算法加密时基于算法的保护,即一旦算法泄露,信息也就泄露了;密匙加密是基于密匙的保护(包括对称加密和非对称加密),即算法可以公开,但密匙泄露,信息就会泄露!
重点介绍一下我所了解的软件注册机制,目前流行的软件注册机制主要包括以下几种:
1. 基于KEY文件
KEY文件是一种利用文件来注册软件的保护方式,试用版软件没有注册文件,当用户向作者付费注册之后,会收到作者寄来的注册文件,其中可能包含用户的个人信息。
实现方法:首先写入用户信息,然后将用户信息运算后生成的注册码写入文件。程序运行时读取文件信息并进行匹配;
2. 时间限制
时间限制是一种使得用户只能在有限的时间或有限的次数使用软件,超过使用期限则无法使用。
实现方法有两种:a. 在程序中加一个定时器(限制使用时间) b.使用注册表(限制使用次数和时间)
3. 序列号保护
这种方法一般依赖于程序员的变成技巧。用户想使用软件,首先需要将自己的注册信息发送给开发商,然后开发商会给用户发送一个注册码,用户注册后便可以使用软件.
实现方法:将用户发送来的信息(例如:用户名,Email等),组合并进行一定量的加密演算生成注册码;
4. CD核查
主要应用于光盘发布的程序,如果光盘中不存在指定的文件或文件中内容不对应,软件将不能运行。
实现方法:首先获取所有的磁盘序列号,然后遍历序列号,找到光盘驱动号,然后再在其中查找指定的文件;
5. 加密狗
它是一个安装在并口、串口等接口上的硬件电路,同时有一套使用于各种语言。接口软件和工具软件。软件运行时会想加密狗发送指令,如果收到响应,软件就可以 正常运行;若用户将加密狗拔出,程序就收不到响应,相应的软件不能运行。适用于比较有商业价值的软件。
实现方法:通过加密狗的语言接口进行编程通信,可以使用一些特定的信息与加密狗交互;
6. 软硬结合
这种方法可以限制用户端软件的安装,即每一个序列号只能匹配某一台电脑,其他电脑安装则不可。软件加密虽然加密强度比硬件方法较弱,但它具有非常廉价的成本、方便的使用方法等优点。
实现方法:获取pc机CPU序列号、网卡序列号或硬盘序列号等信息,将这些信息通过一定的算法运算生成注册码,注册码是动态生成的,不可伪造的。
针对以上方法,可以做一个注册机,专门用来生成注册码、注册文件等相关信息。目前我实现了其中的一部分,欢迎有兴趣的朋友一起探讨!如果你把这篇文章从头看到尾,那我只能说两字:谢谢!