lvcaolhx 发表于 2007-12-7 11:14:31

第一个Delphi算法注册机

程序注册算法的方式为:
读入注册名和注册码,注册码的长度应该为11位,且第6位必须为‘-’,字符即是:
将:【注册码第 7位的ASCII值 - 注册码第1位的ASCII值 + $30】的结果 重新写回 注册码的第1位;
将:【注册码第 8位的ASCII值 - 注册码第2位的ASCII值 + $30】的结果 重新写回 注册码的第2位;
将:【注册码第 9位的ASCII值 - 注册码第3位的ASCII值 + $30】的结果 重新写回 注册码的第3位;
将:【注册码第10位的ASCII值 + 注册码第4位的ASCII值 - $30】的结果 重新写回 注册码的第4位;
将:【注册码第11位的ASCII值 - 注册码第5位的ASCII值 + $30】的结果 重新写回 注册码的第5位;
               
然后这个新生成的11位长度的字符串,取该新字符串的前5位(即上面运算的5个结果),与字符串 PhoXo 比较,只要两者相等,便注册成功了!
Delphi源码为:(支持中文)

procedure TForm1.Button1Click(Sender: TObject);
var
sName,sTemp1,sTemp2:string;
iNameLength:integer;
i:integer; //控制循环次数
begin
sName:=Edit1.Text;//取用户名。
iNameLength:=Length(sName); //取用户名长度
sTemp1:=' ';
if (iNameLength<>11) or (sName<>'-') then
   begin
      //不在范围内提示假注册码不合法
      MessageBox(Form1.handle,'假注册码不合法,请输入11位假注册码,第6位必有为"-"!','友好提示!',MB_OK);
      exit;
    end;
for i:=1 to 6 do
sTemp2:=sTemp2+sName;
   for i:=1 to 5 do
    begin
      case i of   //注册码第7,8,9,10,11位依次和字符串PhoXo运算
      1: sTemp1 :=sTemp1+ chr(ord(sName) + ord('P')-$30);
      2: sTemp1:= sTemp1+chr(ord(sName) + ord('h')-$30);
      3: sTemp1 :=sTemp1+ chr(ord(sName) + ord('o')-$30 );
      4: sTemp1 :=sTemp1+ chr($30 - ord(sName) + ord('X'));
      5: sTemp1 :=sTemp1+ chr(ord(sName) + ord('o')-$30 );
      end;
end;
Edit2.Text:=sTemp2+sTemp1;
end;

end.

blitz 发表于 2007-12-7 12:57:50

/:L 你怎么可以这样....还没开课,作品都出来了..

yingfeng 发表于 2007-12-10 17:08:07

还看不懂,如果楼主把全部的的注释加上去就好了/:good

天涯之海 发表于 2007-12-16 12:17:07

/:L不懂~~

网络小子 发表于 2007-12-16 18:41:59

有些茫然,我感觉自己太笨了,加油学习!!

egowssc 发表于 2008-5-15 11:47:51

真的蛮难的,努力学习。

cur 发表于 2008-6-3 22:54:52

很好哦 这样可以学到好几点知识呢!!谢谢分享哈!

diaoker 发表于 2008-8-14 12:03:01

顶一下·····

lyang0010 发表于 2008-8-31 18:56:43

不懂啊,太深奥/:018

fjf2001 发表于 2009-7-31 10:29:35

让俺看晕了,不知道你的程序是怎么写的。
页: [1] 2
查看完整版本: 第一个Delphi算法注册机