好象是这样的 (1千字)
注册机#include <stdio.h>
#include <string.h>
#include <windows.h>
long GenerateNumber(char *s);
void main(void)
{
char Name[64];
long number;
char Serial[9];
char buf[16];
printf("Input your name: ");
gets(Name);
number = GenerateNumber(Name);
sprintf(buf, "%010lu", number);
Serial[1] = buf[6];
Serial[2] = buf[7];
Serial[3] = buf[8];
Serial[4] = buf[9];
//Serial[0]、Serial[5]、Serial[6]是任意的,这里随机生成它们
//Serial[0]不能为0
//并非真正的随机数
number = GetTickCount( ) % 1000;
Serial[0] = (number % 9) + '1';
number /= 10;
Serial[5] = (number % 10) + '0';
number /= 10;
Serial[6] = (number % 10) + '0';
Serial[7] = '\0';
number = GenerateNumber(Serial);
sprintf(buf, "%010lu", number);
Serial[7] = buf[9];
Serial[8] = '\0';
printf("Your registration code is: %s\n", Serial);
}
long GenerateNumber(char *s)
{
long ECX;
long sum;
long k, length;
length = strlen(s);
if (length <= 0) return 0;
sum = 0;
ECX = 0x00600937;
for(k = 0; k < length; k++)
{
sum += (s[k] & 0xFF) * (k+1) * ECX;
ECX *= 0x00600937;
}
return sum;
}
