⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ucrypt.pas

📁 网吧管理系统 网吧IC卡计费管理系统源码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
     SETLENGTH(S1,6);
     FOR I:=1 TO 6 DO BEGIN
         TRY
            S1[I]:=CHR(STRTOINT('$'+SOURCE[I*2-1]+SOURCE[I*2]));
         EXCEPT
            RESULT:=FALSE;
            EXIT;
         END;
     END;
     TMPNUM:=ORD(S1[6]);
     S1:=COPY(S1,1,5);
     SETLENGTH(S2,10);
     FOR I:=0 TO 9 DO
         S2[I+1]:=CHR((TMPNUM+I) MOD 255);
     S1:=DECRYPTSTRING(S1,S2);
     IF S1='' THEN
        EXIT;
     S1:=S1+CHR(TMPNUM);
     S2:=DECRYPTSTRING(S1,KEY);
     IF S2='' THEN
        EXIT;
     S1:='';
     TMPNUM:=0;
     FOR I:=1 TO LENGTH(S2) DO
         S1:=S1+INTTOHEX(ORD(S2[I]),2);
     FOR I:=1 TO 5 DO BEGIN
         TRY
            TMPNUM:=TMPNUM+STRTOINT('$'+S1[I*2-1]+S1[I*2]);
         EXCEPT
            RESULT:=FALSE;
            EXIT;
         END;
     END;
     TMPNUM:=TMPNUM MOD 255;
     IF TMPNUM<>STRTOINT('$'+COPY(S1,11,2)) THEN
        EXIT;
     TMPNUM:=STRTOINT('$'+COPY(S1,1,6));
     DATE1:=STRTOINT('$'+COPY(S1,7,4));
     GUESTID:=TMPNUM;
     LASTDATE:=YEAR2000+DATE1;
     RESULT:=TRUE;
END;


FUNCTION DECRYPTSID(const SOURCE:STRING;VAR GUESTID:LONGWORD;VAR LASTDATE:TDATETIME):BOOLEAN;
BEGIN
     result:=decryptid(source,'This is Adel Service ID(ASID)',guestid,lastdate);
END;

FUNCTION MAKEsn(PRONUM,GUESTID:INTEGER;NKEY:BYTE;LASTDATE:TDATETIME):string;
var
   i:integer;
   TMPNUM,lastd:integer;
   TMPSTR,TMPSTR1,TMPSTR2,TMPSTR3,TMPSTR4:STRING;
   snkey:string;
BEGIN
     RESULT:='';
     IF proNUM=0 THEN
        EXIT;
     if guestid=0 then
        exit;
     TMPSTR:=INTTOHEX(proNUM,8);
     SETLENGTH(TMPSTR1,4);
     FOR I:=1 TO 4 DO
        TMPSTR1[I]:=CHR(STRTOINT('$'+COPY(TMPSTR,I*2-1,2)));
     TMPSTR:=INTTOHEX(guestid,6);
     SETLENGTH(TMPSTR2,4);
     FOR I:=1 TO 3 DO
        TMPSTR2[I]:=CHR(STRTOINT('$'+COPY(TMPSTR,I*2-1,2)));
     tmpstr2[4]:=chr(nkey);
     if lastdate<=180 then
        lastd:=round(lastdate)
     else
        lastd:=ROUND(lastdate-year2000);

     setlength(tmpstr3,2);
     tmpstr:=inttohex(lastd,4);
     FOR I:=1 TO 2 DO
        TMPSTR3[I]:=CHR(STRTOINT('$'+COPY(TMPSTR,I*2-1,2)));
     tmpstr:=tmpstr1+tmpstr2+tmpstr3;

     tmpstr:=cryptstring(tmpstr,'This is legal software. Thank you!');
     if tmpstr='' then
        exit;
     nkey:=ord(tmpstr[8]);
     SETLENGTH(SNKEY,10);
     for i:=0 to 9 do begin
         tmpnum:=nkey+i;
         if tmpnum>255 then
            tmpnum:=tmpnum-255;
         snkey[i+1]:=chr(tmpnum);
     end;
     tmpstr:=copy(tmpstr,1,7)+copy(tmpstr,9,2);
     tmpstr:=cryptstring(tmpstr,snkey);
     if tmpstr='' then
        exit;
     tmpstr1:=copy(tmpstr,1,7)+chr(nkey)+copy(tmpstr,8,2);

     tmpstr:='';
     for i:=1 to 10 do
         tmpstr:=tmpstr+inttohex(ord(tmpstr1[i]),2);

     TMPSTR4:=CRYPTstring('Adel',tmpstr);
     if tmpstr4='' then
        exit;

     for i:=1 to 4 do
         tmpstr:=tmpstr+inttohex(ord(tmpstr4[i]),2);
     result:=tmpstr;
END;

function cryptstring(const source,key:string):string;
begin
     result:='';
     if (source='') or (key='') then
        exit;
     if not begincrypt(key) then
        exit;
     result:=crypt(source,true);
end;
function decryptstring(const source,key:string):string;
begin
     result:='';
     if (source='') or (key='') then
        exit;
     if not begincrypt(key) then
        exit;
     result:=decrypt(source,true);
end;
function cryptstrasc(const source,key:string):string;
var
   s1,s2:string;
   i:integer;
begin
     result:='';
     s1:=cryptstring(source,key);
     if s1='' then
        exit;
     s2:='';
     for i:=1 to length(s1) do
         s2:=s2+inttohex(ord(s1[i]),2);
     result:=s2;
end;

function decryptstrasc(const source,key:string):string;
var
   s1:string;
   i,j:integer;
begin
     result:='';
     if (length(source) mod 2)<>0 then
        exit;
     j:=length(source) div 2;
     s1:='';
     for i:=1 to j do BEGIN
         TRY
            s1:=s1+chr(strtoint('$'+source[i*2-1]+source[i*2]));
         EXCEPT
            REsULT:='';
            EXIT;
         END;
     END;
     result:=decryptstring(s1,key);
end;

function cryptxtcs(const source:string):string;
var
   s1,s2:string;
   i:byte;
begin
     s1:=cryptstring(source,'This Adel System Params(ASP)');
     s2:='';
     for i:=1 to length(s1) do
         s2:=s2+inttohex(ord(s1[i]),2);
     result:=s2;
end;
function decryptxtcs(const source:string):string;
var
   s1:string;
   i,j:byte;
begin
     result:='';
     if (length(source) mod 2)<>0 then
        exit;
     j:=length(source) div 2;
     s1:='';
     for i:=1 to j do BEGIN
         TRY
            s1:=s1+chr(strtoint('$'+source[i*2-1]+source[i*2]));
         EXCEPT
            REsULT:='';
            EXIT;
         END;
     END;
     result:=decryptstring(s1,'This Adel System Params(ASP)');
end;

function checklimit:BOOLEAN;
VAR
   D1,D2,sid,msgSTR:STRING;
   cid:dword;
   d:integer;
   DATE1,DATE2,date0:TDATETIME;
BEGIN
     RESULT:=FALSE;
     FRM_SYS_DM.QXTCS.CLOSE;
     FRM_SYS_DM.QXTCS.OPEN;
     D1:=TRIM(FRM_SYS_DM.QXTCS.FIELDBYNAME('LDATE').ASSTRING);
     D2:=TRIM(FRM_SYS_DM.QXTCS.FIELDBYNAME('FDATE').ASSTRING);
     SID:=TRIM(FRM_SYS_DM.QXTCS.FIELDBYNAME('SYSID').ASSTRING);
     IF (LENGTH(D1)<>12) OR (LENGTH(D2)<>12) OR (LENGTH(SID)<>12) THEN BEGIN
        BEEP;
        APPLICATION.MESSAGEBOX('系统参数被非法改变','提示',16);
        EXIT;
     END;
     if not ((decryptlimit1(d1,sid,date1)) and (decryptlimit2(d2,sid,date2)) AND
        (DECRYPTSID(SID,CID,DATE0))) then begin
        BEEP;
        APPLICATION.MESSAGEBOX('系统参数被非法改变','提示',16);
        EXIT;
     end;
     IF CID<>DWORD(FRM_SYS_DM.QXTCS.FieldByName('ID').ASINTEGER) THEN BEGIN
        BEEP;
        APPLICATION.MESSAGEBOX('系统参数被非法改变','提示',16);
        EXIT;
     END;
     if date1-year2000=65535 then begin
        result:=true;
        exit;
     end;
     IF DATE>DATE1 THEN
        DATE1:=DATE;
     D:=round(DATE1-DATE);
     IF (D<=7) AND (DATE1-DATE2<>7) THEN BEGIN
        DATE2:=DATE1-7;
        if cryptlimit2(date2,cid,msgSTR) then
           myexecsql('UPDATE XTCS SET FDATE='''+msgSTR+'''');
     end;
     IF (DATE<DATE2) THEN
        D:=0;
     IF D>7 THEN BEGIN
        RESULT:=TRUE;
        EXIT;
     END;
     IF D<=0 THEN
        MSGSTR:='你的权限已经到期,是否输入新的权限ID?'
     ELSE
        MSGSTR:='你的权限再有'+inttostr(d)+'天就要到期了,是否输入新的权限ID?';
     BEEP;

     IF APPLICATION.MESSAGEBOX(PCHAR(MSGSTR),'提示',36)<>IDYES THEN BEGIN
        RESULT:=D<>0;
        EXIT;
     END;
     application.CreateForm(tf_input,f_input);
     F_INPUT.SID:=SID;
     F_INPUT.guestid:=CID;
     F_INPUT.LASTDATE:=DATE1;
     F_INPUT.firSTDATE:=DATE2;
     RESULT:=(f_input.showmodal=MRok) OR (D<>0);
END;


FUNCTION cryptLIMIT(const SOURCE:TDATETIME;CONST GUESTID:LONGWORD;key:string;var DEST:STRING):boolean;
BEGIN
   RESULT:=MAKEID(GUESTID,SOURCE,key,DEST);
END;
FUNCTION cryptLIMIT0(const SOURCE:TDATETIME;CONST GUESTID:LONGWORD;var DEST:STRING):boolean;
begin
   result:=cryptlimit(source,guestid,'The Input Date Is System Params(2)(ISP)',dest);
end;
FUNCTION cryptLIMIT1(const SOURCE:TDATETIME;CONST GUESTID:LONGWORD;var DEST:STRING):boolean;
begin
   result:=cryptlimit(source,guestid,'The System Params(2) Is Next Trigging Date(NTD)',dest);
end;
FUNCTION cryptLIMIT2(const SOURCE:TDATETIME;CONST GUESTID:LONGWORD;var DEST:STRING):boolean;
begin
   result:=cryptlimit(source,guestid,'The System Params(3) Is Last Trigged Date(LTD)',dest);
end;

FUNCTION decryptLIMIT(const SOURCE,sid:string;key:string;var DEST:TDATETIME):boolean;
VAR
   guestid,GUESTID2:longword;
   destdate,lastdate:tdatetime;
BEGIN
     RESULT:=FALSE;
     if not decryptsid(sid,guestid,lastdate) then
        exit;
     IF NOT decryptid(source,key,guestid2,DESTdate) THEN
        EXIT;
     IF GUESTID<>GUESTID2 THEN
        EXIT;
     DEST:=DESTDATE;
     RESULT:=TRUE;

END;
FUNCTION decryptLIMIT0(const SOURCE,sid:string;var DEST:TDATETIME):boolean;
begin
   result:=decryptlimit(source,sid,'The Input Date Is System Params(2)(ISP)',dest);
end;
FUNCTION decryptLIMIT1(const SOURCE,sid:string;var DEST:TDATETIME):boolean;
begin
   result:=decryptlimit(source,sid,'The System Params(2) Is Next Trigging Date(NTD)',dest);
end;
FUNCTION decryptLIMIT2(const SOURCE,sid:string;var DEST:TDATETIME):boolean;
begin
   result:=decryptlimit(source,sid,'The System Params(3) Is Last Trigged Date(LTD)',dest);
end;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -