首页
社区
课程
招聘
[原创]第一题代码+注册机
发表于: 2007-8-23 18:32 6340

[原创]第一题代码+注册机

4nil 活跃值
13
2007-8-23 18:32
6340
BOOL GenRegCode(HWND hWnd) 
{
	int  len,i;	
	TCHAR szName[MAXINPUTLEN]={0};
	TCHAR szSerial[MAXINPUTLEN]={0};
	//TCHAR szBuffer[MAXINPUTLEN]={0};
	long key=0x13572468, eax=0;
	unsigned char checksum[10]={0};
	unsigned char magic[1024]="1213121412131215121312141213121612131214121312151213121412131217121312141213121512131214121312161213121412131215121312141213121812131214121312151213121412131216121312141213121512131214121312171213121412131215121312141213121612131214121312151213121412131219";
	unsigned char tmpstring[1024]={0};

	len=GetDlgItemText(hWnd, IDC_NAME, szName, sizeof(szName)/sizeof(TCHAR)+1); // 取姓名

	for(i=0; i<len; i++)
	{
		eax = ((DWORD)szName[i]+key)*0x3721273+0x24681357;
		key = (eax<<25)|(eax>>7);
	}

	for(i=1; i<9; i++)
	{
		checksum[i] = (key>>i)&1;
	}
	checksum[9] = 1;

	do
	{
		eax = findindex(checksum, 1, 10);
		if(eax==-1)break;
		if(checksum[eax+1]==1)
		{
			wsprintf(tmpstring, "%d", eax+1);
			strcat(szSerial, tmpstring);
			checksum[eax+1]=0;
		}
		else
		{
			checksum[eax]=0;
			while(eax--)
			{
				memset(tmpstring, 0, sizeof(tmpstring));
				strncpy(tmpstring, magic, 1<<(eax));
				strcat(szSerial, tmpstring);
			}
		}
	}while(1);

	len=strlen(szSerial);
	for(i=0; i<len; i++)
	{
		szSerial[i]=0x30+(10+(szSerial[i]-0x30)-((DWORD)key>>(i%0x1f))%10)%10;
	}
	SetDlgItemText(hWnd, IDC_OUT, szSerial);       // 显示正确的序列号	
	return TRUE;
}

int findindex(char * input, char ch, int len)
{
	int i;
	for(i=0; i<len; i++)
		if(input[i]==ch)return i;
	return -1;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 313
活跃值: (440)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
2
注册机全部代码.项目文件
上传的附件:
2007-8-23 19:33
0
游客
登录 | 注册 方可回帖
返回
//