要实现软件注册功能,首先需要知道实现注册机制要涉及到的几个问题:1、如何加入注册检测,判断软件是否注册;2、如何生成注册码,如何保证一个用户名只生成与之唯一对应的注册码;3、在软件不注册情况下,如何限制软件功能的局限性;4、对已经负费使用用户而言,不应造成使用不便。
首先,应该有一个生成注册码的算法,以下是我简单的一个生成15位注册码的算法:
//该函数返回一个cstring类型的15位注册码,入口参数为用户名
cstring getregpasswd(cstring &dirname)
//将用户名换算成15位注册码
long num1,num2,num3;
char sn16=0;
cstring p;
int i,len;
num1=0;
num2=0;
num3=0;
len=int(strlen(dirname));
for( i=1;i<=len;i++)
//第一步算法
num1=(long(num1+(int(dirnamei-1)*i*i)*(i*sqrt(dirnamei-1)+1)))%100000;
//第二步算法
num2=(num2*i+(long(pow((int)dirnamei-1,2)*i)))%100000;
//第三步算法
num3=(num2+(long)sqrt(num1))%100000;
//以下把三个算法结果分别生成5个字符,共有15个
for(i=0;i<5;i++)
sni=(int)(num1+31+i*i*i)%128;
for(i=5;i<10;i++)
sni=(int)(num2+31+i*i*i)%128;
for(i=10;i<15;i++)
sni=(int)(num3+31+i*i*i)%128;
sn15=0;
//以下循环把所有生成的字符转换为09,az,az
for(i=0;i<15;i++)
while((sni<0sni>9) &&(sniz)&&(sniz) )
sni=(sni+31+7*i)%128;
//赋值给一个cstring变量,用做函数返回值
p.format(%s,sn);
return p;
//检查软件是否注册的函数:
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器