jiami.h

来自「基于计算机特征码的软件注册加密及序列号生成的源程序」· C头文件 代码 · 共 61 行

H
61
字号
#include <math.h>

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; 
//第三步算法 
Num3=(Num2+(long)sqrt(Num1))%100000; 
} 
//以下把三个算法结果分别生成5个字符,共有15个 
for(i=0;i<5;i++) 
sn[i]=(int)(Num1+31+i*i*i)%128; 
for(i=5;i<10;i++) 
sn[i]=(int)(Num2+31+i*i*i)%128; 
for(i=10;i<15;i++) 
sn[i]=(int)(Num3+31+i*i*i)%128; 
sn[15]=0; 
//以下循环把所有生成的字符转换为0---9,A---Z,a----z 
for(i=0;i<15;i++) 
{ 
while((sn[i]<'0' || sn[i]>'9') && (sn[i]<'A' || sn[i]>'Z') &&(sn[i]<'a' || sn[i]>'z') ) 
{ 
sn[i]=(sn[i]+31+7*i)%128; 
} 
} 
//赋值给一个CSTRING变量,用做函数返回值 
p.Format("%s",sn); 
} 
return p; 
} 

CString LockTable(CString strInput,UINT nLen)//密码表加密
{
	int Key;
	TCHAR mm;
	for (UINT i = 0;i<nLen;i++)
	{
		Key = int(fmod(i,8));
		mm = strInput.GetAt(i) ^ TCHAR(pow(2,Key));
		strInput.SetAt(i,mm);
	}
	return strInput;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?