谁能提供一个好的序列号的生成算法,很着急!!!!!!!!详细一点,就这些分,一定加分! 我有,是C++BUILDER的从一个“注册名"生成唯一的一个“序列号”如: 123a-23h5 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 能不能给我发一个!多谢![email protected]!再次感谢! 如果你只要一个永远唯一的序列号的话,只要一个函数就行了:function CreateClassID:String;记得在USES里加上COMOBJ。 to BCB我也想要:-)[email protected] 用turbopwr套件中的onGuard根本不用自己写程序. String Cal_Psw3(String dw0,char *pw0) //用用户名,pw0加密字,返回注册号{ unsigned __int64 i64; // 返回 U8XU-B8NK-WAXR char *buf=(char *)&i64; dw0=dw0.Trim().UpperCase(); if (dw0=="") dw0=Now().DateTimeString(); String dw=dw0; int L=dw.Length(); int K=((L+7)/8); int L1=K*8; while (L<L1) // 长度配成8的倍数 { dw=dw+dw0; L=dw.Length(); } dw=dw.SubString(1,L1); char *s=pw0; if (*s!=0) for (int i=1;i<=L1;i++) // XOR { if (*s==0) s=pw0; dw[i]^=*s++; } for (int i=0;i<8;i++) //按组相加 { char s=0; for (int j=1;j<=K;j++) s+=dw[K*i+j]; buf[i]=s; } int y=((int)i64)&0xf; //循环右移y位 i64=i64>>4; i64=(i64>>y)+(i64<<(64-y)); String psw=""; for (int i=0;i<12;i++) { // 'A'-'N','P'-'Y','2'-'9' int c=((int)i64)&31; if (c<14) c+='A'; else if (c>=24) c=(c-24)+'2'; else c=(c-14)+'P'; if (c=='I') c='8'; psw=psw+String((char)c); i64=i64>>5; if (i==3 || i==7) psw=psw+"-"; } return(psw);}String Cal_Psw2(String dw0,char *pw0) //用用户名,pw0加密字,返回注册号{ // 格式: QXQQ-KS83 unsigned __int64 i64; char *buf=(char *)&i64; dw0=dw0.Trim().UpperCase(); if (dw0=="") dw0=Now().DateTimeString(); String dw=dw0; int L=dw.Length(); int K=((L+7)/5); int L1=K*5; while (L<L1) // 长度配成5的倍数 { dw=dw+dw0; L=dw.Length(); } dw=dw.SubString(1,L1); char *s=pw0; for (int i=1;i<=L1;i++) // XOR { if (*s==0) s=pw0; dw[i]^=*s++; } for (int i=0;i<5;i++) //按组相加 { char s=0; for (int j=1;j<=K;j++) s+=dw[K*i+j]; buf[i]=s; } String psw=""; for (int i=0;i<8;i++) { // 'A'-'N','P'-'Y','2'-'9' int c=((int)i64)&31; if (c<14) c+='A'; else if (c>=24) c=(c-24)+'2'; else c=(c-14)+'P'; if (c=='I') c='8'; psw=psw+String((char)c); i64=i64>>5; if (i==3) psw=psw+"-"; } return(psw);}void __fastcall TForm1::Button1Click(TObject *Sender){ // Edit2加密字可任意取 Edit3->Text=Cal_Psw3(Edit1->Text,Edit2->Text.Trim().c_str()); // 三段方案 Edit4->Text=Cal_Psw2(Edit1->Text,Edit2->Text.Trim().c_str()); // 二段方案} uses ActiveX;var Guid:TGuid; SN:string;begin CoCreateGUID(Guid); SN := GuidToStr(Guid));end; to smallbridge: SN 的结果是什么样子? 很想知道这个是不是listbox,或者是其他控件? 求:数值模拟的三维可视化解决方案 求一查询语句 如何缩小一个图片的分辨率? 制作ActiveX控件使,怎样才能在控件里弹出一个窗体。 把汇编用在delphi中有什么好处吗? 请救救小弟!!! 请问Activform在IE中为何不显示内容?Ie的安全性调为最低都不行!!! 如何获得分给本机的所有IP地址? 怎么在程序中得到条形码扫描器的数据 谁能推介,几本学习OBJECT PASCAL的书谢谢啦!! 做一个类似于wingate之类的代理服务器需要那些知识,哪里有参考
[email protected]!再次感谢!
function CreateClassID:String;
记得在USES里加上COMOBJ。
我也想要:-)
[email protected]
{
unsigned __int64 i64; // 返回 U8XU-B8NK-WAXR
char *buf=(char *)&i64;
dw0=dw0.Trim().UpperCase();
if (dw0=="")
dw0=Now().DateTimeString();
String dw=dw0;
int L=dw.Length();
int K=((L+7)/8);
int L1=K*8;
while (L<L1) // 长度配成8的倍数
{
dw=dw+dw0;
L=dw.Length();
}
dw=dw.SubString(1,L1);
char *s=pw0;
if (*s!=0)
for (int i=1;i<=L1;i++) // XOR
{
if (*s==0)
s=pw0;
dw[i]^=*s++;
}
for (int i=0;i<8;i++) //按组相加
{
char s=0;
for (int j=1;j<=K;j++)
s+=dw[K*i+j];
buf[i]=s;
}
int y=((int)i64)&0xf; //循环右移y位
i64=i64>>4;
i64=(i64>>y)+(i64<<(64-y));
String psw="";
for (int i=0;i<12;i++)
{ // 'A'-'N','P'-'Y','2'-'9'
int c=((int)i64)&31;
if (c<14)
c+='A';
else
if (c>=24)
c=(c-24)+'2';
else
c=(c-14)+'P';
if (c=='I')
c='8';
psw=psw+String((char)c);
i64=i64>>5;
if (i==3 || i==7)
psw=psw+"-";
}
return(psw);
}
String Cal_Psw2(String dw0,char *pw0) //用用户名,pw0加密字,返回注册号
{ // 格式: QXQQ-KS83
unsigned __int64 i64;
char *buf=(char *)&i64;
dw0=dw0.Trim().UpperCase();
if (dw0=="")
dw0=Now().DateTimeString();
String dw=dw0;
int L=dw.Length();
int K=((L+7)/5);
int L1=K*5;
while (L<L1) // 长度配成5的倍数
{
dw=dw+dw0;
L=dw.Length();
}
dw=dw.SubString(1,L1);
char *s=pw0;
for (int i=1;i<=L1;i++) // XOR
{
if (*s==0)
s=pw0;
dw[i]^=*s++;
}
for (int i=0;i<5;i++) //按组相加
{
char s=0;
for (int j=1;j<=K;j++)
s+=dw[K*i+j];
buf[i]=s;
}
String psw="";
for (int i=0;i<8;i++)
{ // 'A'-'N','P'-'Y','2'-'9'
int c=((int)i64)&31;
if (c<14)
c+='A';
else
if (c>=24)
c=(c-24)+'2';
else
c=(c-14)+'P';
if (c=='I')
c='8';
psw=psw+String((char)c);
i64=i64>>5;
if (i==3)
psw=psw+"-";
}
return(psw);
}void __fastcall TForm1::Button1Click(TObject *Sender)
{
// Edit2加密字可任意取
Edit3->Text=Cal_Psw3(Edit1->Text,Edit2->Text.Trim().c_str()); // 三段方案
Edit4->Text=Cal_Psw2(Edit1->Text,Edit2->Text.Trim().c_str()); // 二段方案
}
Guid:TGuid;
SN:string;
begin
CoCreateGUID(Guid);
SN := GuidToStr(Guid));
end;
SN 的结果是什么样子?