最近在做一个关于软件开发版权的注册机,当然这个涉及到的加密算法都是现有的MD5和DES,所以我是对他们进行包装,然后供我使用,这里也算是提供一个思路吧,让不理解注册机原理的童鞋了解一下怎么自己写一个简单的注册机。当然这里涉及到项目的一些内容,所以核心代码不能提供。
项目中不仅开发了PC端也开发了Android端的软件,所以注册机要适用这两个的注册。客户的PC端和Android端分别开发一个获取序列号,然后有激活码就能注册的程序,但是我们服务端还要额外开发一个生成激活码的注册机程序。大致思路是这样的:首先第一步都是要获取唯一标识的一串字符编码,PC端可以用CPU的id,MAC地址,硬盘序列号等信息或者几个信息的拼接;Android端可以用Serial Number,wifi的MAC地址或者蓝牙的地址,DeviceID等信息。其次,对获取到的唯一标识的字符串进行MD5加密,然后得到固定长度的32位字符串。你可以把这32位作为DES加密的密文,也可以取其中部分作为密文,比方说我们取开始的8位作为密文。DES加密还需要密钥,这个密钥我们可以用时间信息,比方说,我们获取当前时间,然后对时间字符串进行MD5加密,然后取8的整数倍位数的字符串作为密钥,因为DES的密钥要求是8的的倍数位数。这样密文和密钥我们都有了,然后DES加密,得到加密后的明文,我们的序列号就是明文和密钥的拼接组成的,一定要有密钥在序列号里面,因为DES加密和解密都是要密钥才能实现的。服务端的注册机只要有序列号,然后把明文和密钥分离出来,再DES解密获取到密文,再对密文进行一定规律的组合,生成激活码。客户端得到激活码,按组合的规律获取到密文,验证密文是否就是之前进行DES加密的那一串MD5字符串就知道是否是有效的注册码了。
这里贴几张做好的DEMO的演示的图片。
PC端的生成序列号的DEMO
Android端生成序列号的DEMO
服务端生成激活码的DEMO
这里有一些代码是可以分享的,我就不贴出来了,直接上传,留了地址。
PC端写好的辅助类,一个是获取PC的cpu的id,MAC地址,硬盘信息;还有一个是MD5加密的类;另外一个是DES加解密的类,这里有源码:http://download.csdn.net/download/u012321815/8493453
这是android版的注册机用到的一个我自己写的辅助包,包里面也有三个写好了的帮助类,一个是获取手机唯一标识码类,这个类获取手机的Serial Number,MAC地址和DeviceId;还有一个类是MD5加密的算法实现;另外一个是DES加密算法的实现,这里有源码:http://download.csdn.net/detail/u012321815/8493459