软件加密讨论,如何控制软件有效期?一个MIS软件,想结合数据库进行加密处理,MIS的特点是用户名和系统时间都比较重要,因为打印的单据上都有,用户名和时间如果是错误的,这样系统对用户没有太多的价值。因此,结合用户名和时间进行加密运算是可行的,要做到只有合法用户才能使用,并且能控制有效期以及简单方便的延期,该如何做呢?

解决方案 »

  1.   

    Delphi在线帮助系统-->其它杂项-->其它杂项 [打印] [保存] [关闭] 
     
    软件试用期的实现 
    提交日期:2004-2-16  
     
    关键词:试用期  
    procedure TForm1.FormCreate(Sender: TObject);
    var
    re_id:string;
    registerTemp : TRegistry;
    dy:boolean;
    StartTime, StopTime, Difference : TDateTime;
    begin
     dy:=false; //软件是否已到注册期,当值为FALSE是为允许使用。
     registerTemp := TRegistry.Create; //准备使用注册表
     with registerTemp do
     begin
     RootKey:=HKEY_LOCAL_MACHINE; //存放在此根下
     if OpenKey('Software\Microsoft\Windows\CurrentVersion\Mark',True) then
     // 建一目录,存放标志值。当然也可以存放在已存在的目录下。怎么样,很难发现吧?
      begin
        if valueexists('gc_id') then
        begin
           re_id:=readstring('gc_id');//用gc_id的值作为标志,首先判断其存在否?
           StartTime := StrTodate(re_id);
           Difference := StartTime+30;
           if  date<Difference then dy:=true;
         end  else
        begin
        re_id:=datetostr(date);
        WriteString('gc_id',re_id););//建立标志,并置初始标志值。
      end;
     end;
       if dy then begin //若dy值为TRUE,则应提示用户输入注册码,进行注册。
       application.messagebox('请与作者联系,使用注册软件!','警告框',mb_ok);
       CloseKey;
       Free;
       application.terminate;
       end;
    end; //with
    end; 
     
      

  2.   

    方法很多了
    还是使用时钟软件狗的方法最简单,不用写代码的http://lysoft.7u7.net
      

  3.   

    前面说过,由于是MIS系统,用户的名称和时间对用户很重要的(如果你的报表上打印着别的企业的名称,想必会是很难受的,这样的盗版谁也不会用),所以打算在数据库中记录用户的名称和时间,然后进行加密运算,所以基本上不需要用到注册表,而且更安全。倒是具体的算法让我为难,谁有比较好的加密算法呢?
      

  4.   

    我做过这样的软件加密,但是我们的这个MIS软件是与智能卡有关的,我做的是用卡片作为管理员登陆,比较好控制!把时间写进卡片,当然是加过密的时间,而把用户名记录在数据库里,不知你想要的是否和我的一样?如果一样,具体怎么做,我们再进行讨论
      

  5.   

    我的不用卡片,所以只能都记录在数据库中了,应该是可行的,当然,也就是防君子不防小人了,毕竟对MIS而言,售后服务也是很重要的,所以盗版的生存空间也有限,因此没必要把加密做得太复杂。希望大家能提供一个好的算法,谢谢!
      

  6.   

    加密的算法很多啊。
    DES
    RSA
    MD5
    都可以考虑。
      

  7.   

    DES、RSA、MD5,我都不了解啊,有没有具体的算法或者例程?