admin管理员组

文章数量:1534197

2023年12月16日发(作者:)

基于MD5的软件注册码的设计与实现

管丽娟

【摘 要】In this paper, first we summarise several common software

register codes at present, analyse the principle and characteristics of the

register code, then design and implement a new register code. This one is

based on MD5, uses hard disk type and serial number as computer's

fingerprint information, and takes the XOR operation of disk' s serial

number as additional information. The new code plays a certain role on

software protection.%在阐述目前几种常用的注册方式的基础上,分析注册码的原理和特点,设计并实现一种基于MD5的,以硬盘型号+序列号为计算机指纹信息.以磁盘序列号进行异或运算为附加信息的注册码,它对保护软件起到一定的作用.

【期刊名称】《计算机应用与软件》

【年(卷),期】2013(030)001

【总页数】3页(P319-320,333)

【关键词】注册码;计算机指纹信息;Md5;VC++ 6.0

【作 者】管丽娟

【作者单位】广东省湛江师范学院 广东湛江524048

【正文语种】中 文

【中图分类】TP311

0 引言

软件作为个人智慧和血汗的结晶,在希望别人共享自己的成果并提出宝贵意见的同时,也希望自己的辛劳和汗水得到尊重。但由于用户观念上的差异和盗版软件的泛滥,使得软件开发者的权益得不到应有的保护,为保证软件本身不被盗用以及软件开发者的自身利益,软件通常采用加密方式来授权使用。软件加密分硬加密和软加密两种,但软加密以其加密成本低而备受青睐,目前一些商用软件和共享软件绝大部份都是采用注册授权的方式。

1 几种常见的软件授权方式

谈到注册,便立即联想到注册码,但如何生成注册码,对于软件的设计者是一个十分关键的问题。通常而言,注册码授权方式有以下几种方式:(1)安装序列号方式:这是最为常用的方式,Mircosoft提供的产品(例如:Windows系列产品、Office系列产品等等)都是采用这种方式。通过一种复杂的算法生成安装序列号,在安装过程中,安装程序对用户输入的安装序列号进行校验来验证该系统是否被合法,从而完成授权。(2)用户名+序列号方式:即软件系统的供应商给用户提供有效的用户名和序列号,用户在安装过程或启动过程中输入有效的用户名和序列号,系统通过算法校验通过后完成软件授权。(3)在线注册方式:用户安装系统后,通过网络进行注册授权。软件系统的供应商事先已经登记了用户的信息,用户在线注册时,供应商的注册系统对用户的信息进行验证。用户身份有效时,注册系统生成一个凭证信息,软件系统根据凭证信息完成授权。(4)激活码方式:用户安装系统后,软件系统会根据用户机器的关键信息生成一个注册凭证(也可称为注册码),用户将这个注册凭证发送给软件供应商,供应商通过注册凭证生成一个激活码。用户输入激活码,软件系统完成授权。

众所周知,软件不论是采用哪种方式来进行授权,理论上都是可以被破解的,尤其

破解者发现了软件授权机制和原理则任何保护机制都将化为乌有。所以只能够通过选择复杂的算法和机制来增加破解者的破解难度,从而在一定的时间内保证软件不被盗用。本文主要讨论第四种方式的实现。

2 基于MD5的注册码方式的设计

2.1 设计思想

为了设计出一种较好的注册码,需要了解一下注册码的特性。首先,注册码要有随机性,即注册码每一次生成的都不一样。其次,注册码需要有特定性,即注册码对于同一用户是一样的或是功能相同的。再次,注册码要有保密性,即不易被他人查到并破解。基于注册码的这些特点,笔者所用的设计思路是:(1)通过获取硬件信息得到唯一的识别码(例如:主板、MAC地址、CPU序列号、硬盘序列号等等);(2)采用MD5加密技术,通过识别码生成注册码,对系统进行注册。

2.2 提取计算机指纹信息

本文采集计算机指纹信息是由硬盘的型号加序列号组成,因为型号就好比一件商品的专利号,序列号则如一件商品的出产日期,它们的组合具有唯一性。此信息获取虽然可以通过专用软件,但本加密方法采用的是Windows API函数DeviceIoControl,利用该接口函数向指定的设备驱动发送正确的控制码及数据,然后分析它的响应,就可以达到我们的目的。

下面是部分代码:

2.3 附加码策略

上面提取的指纹信息只是硬盘型号和序列号一个简单的叠加,如不加处理,安全性方面欠佳,再加上采用的是公开加密算法,极易破解,为安全起见一般都会采用附加码策略。即加入一个内容确定的字符串,干涉被加密的数据,但不可以用随机字符串,否则会使加密算法无法重现,本文采用的附加码由磁盘序列号进行异或得到。

磁盘序列号由GetVolumeInformation()获取,由于我们只需提取某一磁盘驱动器(一般为系统盘)号,故将参数表中磁盘驱动器代码字符串参数置为c:,并将获取的序列号放入Volue中,其它参数均置空,为了增强保密性,防止用户根据可执行程序分析出提取的特征信息,对所提取的磁盘驱动器卷标序列号进行了简单替换运算,即与0x123456789进行异或运算后才生成附加码。

下面是部分代码:

2.4 MD5加密技术的介绍

MD5的全称是message-digest algorithm 5(信息-摘要算法),在90年代初由mit laboratory for computer science和rsa data security inc的ronald

开发出来,经MD2、MD3和MD4发展而来,它的作用是让大容量信息在用数字签名软件签署私人密匙前被“压缩”成一种保密的格式,即把一个任意长度的字节串变换成一定长的大整数信息摘要(message-digest),以防止被篡改。对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。由于MD5算法的使用不需要支付任何版权费用的,且不能通过逆向算法得到明文,此加密算法已被广泛应用于加密、解密以及数字签名技术中。

3 注册码的实现

将计算机指纹信息与附加码进行组合,得到新的计算机特征码,使用公开的MD5加密算法进行加密,即可得到注册码。采用VC++6.0里面MFC制作的注册码生成器如图1所示。

图1 注册码生成器

4 结语

本文讨论的是一种软件注册码的实现,即以获取硬盘的型号以及序列号作为计算机的指纹信息,以磁盘序列号进行异或运算为附加信息码,以MD5为加密算法控制注册码的生成。并在Windows XP系统中测试通过。

该注册码具有如下特点:

(1)通过Windows API函数DeviceIoControl()和 GetVolumeInformation()提取计算机的指纹信息,所以能保证用户注册码生成的唯一性、特定性;

(2)由于注册信息具有唯一性,实现了“一机一码”的要求,避免了用户多次重复注册,真正控制软件的使用,达到保护软件版权,防止非法拷贝的效果;

(3)该方法稍加修改并嵌入待保护的软件即可应用于软件保护的注册里,为相关领域的问题解决提供了一种可行的途径,尤其是在加密要求不高和低成本的软件开发领域中具有广阔的应用市场。

参考文献

[1]祝明慧,车玉生.Visual C++从入门到精通(视频实战版)[M].机械工业出版社,2011.

[2]黄福员.MD5加密算法及磁盘ID在ASP源码防拷贝中的应用[J].福建电脑,2005(8):48-48.

[3]庞启宁.一种基于注册码的软件加密算法[J].通信与广播电视,2008(2):16-19.

[4]李霞.MD5加密算法浅析及应用[J].运城学院学报,2005,23(5):56-57.

本文标签: 软件信息注册码序列号用户