要实现软件注册功能,首先需要知道实现注册机制要涉及到的几个问题:1、如何加入注册检测,判断软件是否注册;2、如何生成注册码,如何保证一个用户名只生成与之唯一对应的注册码;3、在软件不注册情况下,如何限制软件功能的局限性;4、对已经负费使用用户而言,不应造成使用不便。 |
首先,应该有一个生成注册码的算法,以下是我简单的一个生成15位注册码的算法: |
//该函数返回一个CSTRING类型的15位注册码,入口参数为用户名 |
CString GetRegPasswd(CString &DirName) |
{ |
//将用户名换算成15位注册码 |
long Num1,Num2,Num3; |
char sn[16]={0}; |
CString p; |
int i,len; |
Num1=0; |
Num2=0; |
Num3=0; |
len=int(strlen(DirName)); |
if(len!=0) |
{ |
for( i=1;i<=len;i++) |
{ |
//第一步算法 |
Num1=(long(Num1+(int(DirName[i-1])*i*i)*(i*sqrt(DirName[i-1])+1)))%100000; |
//第二步算法 |
Num2=(Num2*i+(long(pow((int)DirName[i-1],2)*i)))%100000; |
//第三步算法 |