基于矩阵加密生成软件注册码的设计与应用_第1页
基于矩阵加密生成软件注册码的设计与应用_第2页
基于矩阵加密生成软件注册码的设计与应用_第3页
基于矩阵加密生成软件注册码的设计与应用_第4页
基于矩阵加密生成软件注册码的设计与应用_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、    基于矩阵加密生成软件注册码的设计与应用    李锟华杜英国桑志强摘要:该文通过程序对计算机设备信息进行提取,生成该计算机唯一的机器码。软件开发者使用机器码和矩阵进行加密,生成一个包含有加密矩阵信息的注册码,提供给用户注册使用。注册码中包含了加密矩阵信息,所以每个注册码均可以灵活使用随机矩阵进行加密。用户通过注册码还原出机器码,和当前的计算机设备信息进行比较,检查运行的计算机是否经过授权,从而对软件版权进行有效的保护。关键词:机器码;注册码;矩阵加密:tp18 :a :1009-3044(2017)33-0110-03abstract: in th

2、is paper, the computer equipment information is extracted and the only machine code of the computer is generated. the software developer uses the machine code and the matrix to encrypt it, and generates a registration code that contains information about the encrypted matrix, which is provided to th

3、e user for registration. encryption matrix information is included in the registration code, so each registration code can be encrypted using random matrix.the user can restore the machine code by the registration code, compare with the current computer equipment information, check whether the runni

4、ng computer is authorized, and thus effectively protect the software copyright.key words: machine code; registration code; matrix encryption1 背景隨着计算机技术的不断发展,计算机被广泛应用于生产和生活。当计算机普及的同时,软件的版权侵权行为出现的概率也越来越多。如何有效保证计算机软件的版权不受侵犯,保护软件开发设计者和软件开发商的权益,是计算机软件行业共同面临的问题。目前,对于软件的侵权行为主要集中在一些授权软件,应该在相应约定的计算机上运行,然而授权软

5、件经过一些用户解密或破解后,让它在多台未授权计算机上免费运行,让软件开发商和软件设计者造成巨大损失。如何避免类似情况发生,开发者通常用加密手段进行版权保护,其中通过注册码进行授权就是一种简单而又有效的方法。注册码授权就是通过程序获得机器设备基本信息生成机器码,用户把机器码发送给软件设计者或软件开发商,软件设计者或软件开发商生成该设备对应的注册码提供给用户使用,通过注册码校验判断是否为授权计算机,从而有效保护软件的版权。本文以visual b平台为例,利用矩阵对机器码和注册码进行加密和解密,为有效保护计算机软件的版权提供一种简单有效的方法。2 生成注册码的设计思想通过visual b平台,读取授

6、权机器的中央处理器,硬盘,网卡mac的序列号,这三组信息对于每个设备都是唯一的1。程序通过这三组信息,生成对应的ascii编码,形成该机器的机器码,该机器码也是唯一的。用户将机器码发送给软件设计者和软件开发商,开发商通过矩阵加密方式生成相应的注册码,注册码中包含了硬件加密的信息和加密矩阵的信息。将生成注册码发送给用户,用户就可以正常注册成功该软件。当用户登录使用软件时,程序将提取该计算机的硬件信息组成机器码,将包含有加密矩阵信息的注册码进行分解,让注册码矩阵和加密矩阵的逆矩阵进行运算,得出曾经注册过的机器码,和现有的机器码进行比较,完全一致,则可以使用该授权软件,否则软件无法运行2。3 生成注

7、册码设计与实现3.1 读取设备信息的方法3.1.1 读取cpu的序列号信息方法利用visual b平台,读出当前计算机cpu的序列号存放入st1字符串变量中。dim wmi1 as new system.management.managementobjectsearcher("select * from win32_processor")dim uint1 as stringfor each wmiobj1 as managementobject in wmi1.getuint1 = wmiobj1("processorid")nextst1 = uin

8、t13.1.2 读取硬盘序列号的方法利用visual b平台,读出当前计算机硬盘的序列号存放入st2字符串变量中。dim cmicwmi1 as new system.management.managementobjectsearcher("select * from win32_diskdrive")dim uint1 as uint32j = 0for each cmicwmiobj1 as managementobject in cmicwmi1.get uint1 = cmicwmiobj1("signature")str(j) = uint1.

9、tostringj = j + 1nextst2 = str(0)3.1.3 读取网卡mac地址的方法利用visual b平台,读取当前计算机网卡的mac存放入st3字符串变量中。dim wmi1 as new system.management.managementobjectsearcher("select * from win32_networkadapterconfiguration")dim uint1 as stringj = 0for each wmiobj1 as managementobject in wmi1.getif wmiobj1("ip

10、enabled") = true thenuint1 = trim(wmiobj1("macaddress")str(j) = uint1j = j + 1end ifnextst3 = str(0)3.2 生成机器码方法将以上程序获得的计算机cpu序列号,硬盘序列号和网卡mac地址,组成一个字符串,然后,将字符串中每个字符转换成相应ascii编码数值,加入“-”组成当前的机器码,存入sss字符串变量中,该字符串就是生成的机器码。dim i, j, k as integerdim sss as string = ""st4 = st1 + st

11、2 + st3k = 1for i = 0 to 7for j = 0 to 7if k <= len(st1 + st2 + st3) thensss = sss + asc(mid(st4, k, 1).tostring + "-"k = k + 1end ifnextnext3.3 生成注册码和还原机器码的方法3.3.1 生成注册码和还原机器码的原理当开发人员获得要授权的计算机机器码后,开发者通过机器码生成注册码。目前,cpu序列号,硬盘序列号和网卡mac地址字符总数一般不会超过64个字符,我们选用8×8矩阵进行加密处理。首先将机器码转化成8×

12、;8的机器码矩阵,通过和一个随机产生有逆矩阵的8×8加密矩阵进行相乘后,获得注册码矩阵,即:a机器码矩阵×m加密矩阵=a注册码矩阵。将注册码矩阵转换成注册码,同时将随机加密矩阵的信息转换成ascii数值进行数值加密,附加到注册码后面,形成一个带有加密矩阵信息的注冊码。当用户获得注册码后,输入计算机即可获得成功授权。当用户使用该授权软件登录时,通过带有加密矩阵信息的注册码,分解出注册码矩阵和加密矩阵,通过加密矩阵求出加密矩阵的逆矩阵3,然后用注册码矩阵和加密矩阵的逆矩阵相乘,即可求出机器码矩阵,即:a注册码×m加密矩阵的逆矩阵=a机器码,从而还原出机器码。将该机器码

13、和目前计算机cpu序列号,硬盘序列号和网卡mac信息生成的本机机器码相互比较,判断是否为授权的计算机。3.3.2 机器码加密生成注册码的设计当开发者获得机器码后,将机器码转化成8×8的矩阵,存入a(8,8)二维数组,将随机产生的加密矩阵存入b(8,8)数组,把a数组和b数组按照矩阵相乘的规则运算,将结果存入c(8,8)数组。通过c(8,8)数组生成注册码存入str1字符串变量之中,然后将加密矩阵每个元素乘以任意一个加密数值(本例以20为加密数值),然后转换成字符串,连接到str1之后,两者之间用”aa”字符作为分隔符,str1就是带有加密矩阵信息的注册码。dim i, j, k as

14、 integerdim str1 as string = ""for i = 0 to 7for j = 0 to 7for k = 0 to 7c(i, j) = c(i, j) + a(i, k) * b(k, j)nextif c(i,j)<>0 thenstr 1 = str 1 + c(i, j).tostring + "-"end ifnextnextstr2 = str2 + "aa-"for i = 0 to 7for j = 0 to 7str2 = str2 + (b(i, j)*2).tostring

15、 + "-"nextnext3.3.3 注册码解密生成机器码的设计当用户获得注册码注册成功后,每次启动该授权软件,程序将取出带有加密矩阵的注册码,以“aa”作为分隔符,将该注册码分解成注册码部分和加密矩阵部分,将注册码转换成注册码矩阵存入c(8,8)数组,将加密矩阵的每个元素除以加密数值(本例以20为加密数值),求出加密矩阵的逆矩阵存入d(8,8)数组,把c数组和d数组按照矩阵相乘的规则运算,将结果存入e1(8,8)数组。通过e1(8,8)数组生成机器码放入str2字符串变量。将目前使用的计算机硬件信息读出,生成机器码str3字符串变量,和str2进行验证,判断是否为软件授

16、权的计算机。 dim i, j, k as integerdim str2 as string = ""for i = 0 to 7for j = 0 to 7for k = 0 to 7e1(i, j) = (e1(i, j) + c(i, k) * d(k, j)nexte1(i, j) = math.round(e1(i, j), 0)if e1(i, j) <> 0 thenstr2 = str2 + e1(i, j).tostring + "-"end ifnextnext4 矩阵加密生成注册码的结果与分析4.1 读取设备序列号和机

17、器码的运行结果(如图1所示)图1 设备序列号和生成机器码当前的计算机cpu序列号为: bfebfbff000206a7硬盘序列号为:2156105262网卡mac为:60:d8:19:c7:e0:83生成的机器码为:66-70-69-66-70-66-70-70-48-48-48-50-48-54-65-55-50-49-53-54-49-48-53-50-54-50-54-48-58-68-56-58-49-57-58-67-55-58-69-48-58-56-51-4.2 将机器码加密生成注册码的运行结果(如图2所示)图2 注册码的生成输入机器码后,转换成矩阵,和加密矩阵相乘后得到注册码矩

18、阵,加入加密矩阵信息后,生成的注册码为:349-407-612-682-415-617-477-687-254-296-453-523-319-474-361-540-251-303-454-504-305-458-356-503-286-332-504-574-330-494-396-580-264-344-510-552-329-539-411-569-51-165-272-274-165-221-109-165-aa-0-20-20-40-20-20-20-20-0-20-40-20-20-40-0-20-20-20-40-40-20-20-20-20-0-20-20-0-0-20-20

19、-0-40-20-0-0-0-20-40-20-0-20-40-40-0-20-20-40-0-0-0-20-20-40-20-40-40-0-20-40-40-0-0-40-其中“aa”之前的为注册码信息,“aa”之后的为加密矩阵信息。4.3 将注册码解密生成机器码的运行结果(如图3所示)软件注册成功后,每次登录软件,注册码转换成注册码矩阵和加密矩阵,使注册码矩阵和加密矩阵的逆矩阵相乘后得到机器码,生成的机器码为:66-70-69-66-70-66-70-70-48-48-48-50-48-54-65-55-50-49-53-54-49-48-53-50-54-50-54-48-58-68-56-58-49-57-58-67-55-58-69-48-58-56-51-此时,得到的机器码和目前使用的机器码一致,判断是软件授权的计算机。5 结束语本文利用程序获取机器的硬件信息,组成机器码,通过机器码矩阵和加密矩阵相乘运算生成注册码,让注册码矩阵和加密矩阵的逆矩阵相乘还原得到机器码,这种方法既简单而又有效。同时注册码中包含了加密矩阵的信息,对传统

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论