亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ucrypt.pas

?? 網吧管理系統 網吧IC卡計費管理系統源碼
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit UCRYPT;

interface

USES WINDOWS,lzexpand,Sysutils,WINCRYPT,CLASSES,db,DBTABLES,forms,CONTROLS,dialogs;

CONST YEAR2000=36526;

type TSNDESC=CLASS(TBITS)
     PUBLIC
       GUESTID:integer;
       LASTDATE:TDATETIME;
       SID:STRING;
END;


function begincrypt(const KEY:STRING):boolean;
procedure endcrypt;

FUNCTION crypt(const source:string;Final:boolean=false):string;
FUNCTION decrypt(const SOURCE:string;Final:boolean=false):string;

function cryptstring(const source,key:string):string;
function decryptstring(const source,key:string):string;
function cryptstrasc(const source,key:string):string;
function decryptstrasc(const source,key:string):string;

function cryptxtcs(const source:string):string;
function decryptxtcs(const source:string):string;

FUNCTION cryptpassword(const key:string):string;
FUNCTION decryptpassword(const SOURCE,INPUT:string):BOOLEAN;

FUNCTION MAKEsn(PRONUM,GUESTID:INTEGER;NKEY:BYTE;LASTDATE:TDATETIME):string;
FUNCTION decryptsn(const SOURCE:string;sndesc:tsndesc):boolean;

FUNCTION cryptLIMIT(const SOURCE:TDATETIME;CONST GUESTID:LONGWORD;key:string;var DEST:STRING):boolean;
FUNCTION cryptLIMIT0(const SOURCE:TDATETIME;CONST GUESTID:LONGWORD;var DEST:STRING):boolean;
FUNCTION cryptLIMIT1(const SOURCE:TDATETIME;CONST GUESTID:LONGWORD;var DEST:STRING):boolean;
FUNCTION cryptLIMIT2(const SOURCE:TDATETIME;CONST GUESTID:LONGWORD;var DEST:STRING):boolean;
FUNCTION decryptLIMIT(const SOURCE,sid:string;key:string;var DEST:TDATETIME):boolean;
FUNCTION decryptLIMIT0(const SOURCE,sid:string;var DEST:TDATETIME):boolean;
FUNCTION decryptLIMIT1(const SOURCE,sid:string;var DEST:TDATETIME):boolean;
FUNCTION decryptLIMIT2(const SOURCE,sid:string;var DEST:TDATETIME):boolean;

function checklimit:BOOLEAN;

FUNCTION MAKEID(const GUESTID:LONGWORD;THISDATE:TDATETIME;const key:string;VAR SERVICEID:STRING):BOOLEAN;
FUNCTION DECRYPTID(const SOURCE,key:STRING;VAR GUESTID:LONGWORD;VAR LASTDATE:TDATETIME):BOOLEAN;

FUNCTION MAKESID(const GUESTID:LONGWORD;VAR SERVICEID:STRING):BOOLEAN;
FUNCTION DECRYPTSID(const SOURCE:STRING;VAR GUESTID:LONGWORD;VAR LASTDATE:TDATETIME):BOOLEAN;

var
   hProv:HCRYPTPROV;
   hKey:HCRYPTKEY;
   hHash:HCRYPTHASH;
   MYSNDESC:TSNDESC;
implementation

uses finput,SYS_DM,main;

function begincrypt(const KEY:STRING):boolean;
var
   THISKEY:STRING;
   pkey:array of char;
   LEN:DWORD;
   i:integer;
   //ms:array[0..1024] of char;
begin
     result:=false;
     if key='' then
        exit;
     thiskey:=key;
     endcrypt;
     if not CryptAcquireContext(@hProv,nil,nil,PROV_RSA_FULL,0) and
        not CryptAcquireContext(@hProv,nil,nil,PROV_RSA_FULL,CRYPT_NEWKEYSET) then
        exit;
     if not CryptCreateHash( hProv,CALG_MD5,0,0,@hHash) then begin
        endcrypt;
        exit;
     end;
     LEN:=LENGTH(KEY);
     setlength(pkey,len);
     for i:=0 to len-1 do
        pkey[i]:=key[i+1];
     if not CryptHashData(hHash,@pkey[0],LEN,0) then begin
        endcrypt;
        exit;
     end;
     if not CryptDeriveKey(hProv,CALG_RC4,hHash,0{CRYPT_EXPORTABLE},@hKey) then begin
        endcrypt;
        {FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NIL,GetLastError(),GetSystemDefaultLangID(),
           @MS[0],512,NIL);
        SHOWMESSAGE(TRIM(MS)); }
        exit;
     end;
     result:=true;
end;

procedure endcrypt;
begin
     if hHash <> 0 then
        if CryptDestroyHash(hHash) then
           hHash:=0;
     if hKey <> 0 then
        if CryptDestroyKey(hKey) then
           hKey:=0;
     if hProv <> 0 then
        if CryptReleaseContext(hProv,0) then
           hProv:=0;
end;

FUNCTION crypt(const SOURCE:string;Final:boolean=false):string;
var
   PSOURCE:ARRAY OF CHAR;
   datalen:dword;
   I:INTEGER;
BEGIN
     RESULT:='';
     if source='' then
        exit;
     datalen:=lenGTH(source);
     SETLENGTH(PSOURCE,DATALEN);
     FOR I:=0 TO DATALEN-1 DO
         PSOURCE[I]:=SOURCE[I+1];
     if CryptEncrypt(hKey,0,final,0,@psource[0],@datalen,datalen) then
        result:=copy(STRING(psource),1,datalen);
     if final then
        endcrypt;
END;

FUNCTION decrypt(const SOURCE:string;Final:boolean=false):string;
var
   psource:ARRAY OF CHAR;
   datalen:dword;
   I:INTEGER;
BEGIN
     RESULT:='';
     if source='' then
        exit;
     datalen:=lenGTH(source);
     SETLENGTH(PSOURCE,DATALEN);
     FOR I:=0 TO DATALEN-1 DO
         PSOURCE[I]:=SOURCE[I+1];
     if CryptDecrypt(hKey,0,Final,0,@psource[0],@datalen) then
        result:=copy(STRING(psource),1,datalen);
     if final then
        endcrypt;
END;
FUNCTION cryptpassword(const key:string):string;
VAR
   S1,S2:STRING;
   I:BYTE;
begin
      S1:=cryptstring('DWSAP',key);
      S2:='';
      FOR I:=1 TO LENGTH(S1) DO
          S2:=S2+INTTOHEX(ORD(S1[I]),2);
      RESULT:=S2;
end;
FUNCTION decryptpassword(const SOURCE,INPUT:string):BOOLEAN;
VAR
   S1:STRING;
   I:BYTE;
begin
      result:=false;
      if length(source)<10 then
         exit;
      SETLENGTH(S1,5);
      FOR I:=1 TO 5 DO BEGIN
          TRY
             S1[I]:=CHR(STRTOINT('$'+SOURCE[I*2-1]+SOURCE[I*2]));
          EXCEPT
             RESULT:=FALSE;
             EXIT;
          END;
      END;
      result:=decryptstring(S1,input)='DWSAP';
end;
FUNCTION decryptsn(const SOURCE:string;sndesc:tsndesc):boolean;
var
   tmpstr:string;
   I,nkey:BYTE;
   tmpkey:smallint;
   KEYCHECK,TMPNUM:LONGWORD;
   snkey,sn:string;
begin
     result:=false;
     if length(source)<>28 then
        exit;

     snkey:=copy(source,1,20);
     SETLENGTH(TMPSTR,4);
     for i:=10 to 13 do BEGIN
         TRY
            TmPSTR[i-9]:=chr(strtoint('$'+source[i*2+1]+source[i*2+2]));
         EXCEPT
            EXIT;
         END;
     END;
     TMPSTR:=DECRYPTstring(TMPSTR,snkey);
     IF TMPSTR='' THEN
        EXIT;
     if tmpstr<>'Adel' then
        exit;

     TRY
        nkey:=strtoint('$'+source[15]+source[16]);
     EXCEPT
        EXIT;
     END;
     SETLENGTH(SNKEY,10);
     SETLENGTH(SN,10);
     for i:=0 to 9 do begin
         tmpkey:=nkey+i;
         if tmpkey>255 then
            tmpkey:=tmpkey-255;
         snkey[i+1]:=chr(tmpkey);
         TRY
            sn[i+1]:=chr(strtoint('$'+source[i*2+1]+source[i*2+2]));
         EXCEPT
            EXIT;
         END;
     end;
     sn:=copy(sn,1,7)+copy(sn,9,2);
     TMPSTR:=DECRYPTstring(SN,snkey);
     IF TMPSTR='' THEN
        EXIT;

     SN:=COPY(TMPSTR,1,7)+CHR(NKEY)+COPY(TMPSTR,8,2);
     TMPSTR:=DECRYPTstring(SN,'This is legal software. Thank you!');
     IF TMPSTR='' THEN
        EXIT;
     SN:=TMPSTR;

     sndesc.GUESTID:=strtoint('$'+inttohex(ord(sn[5]),2)+inttohex(ord(sn[6]),2)+inttohex(ord(sn[7]),2));
     //日期
     tmpnum:=strtoint('$'+inttohex(ord(sn[9]),2)+inttohex(ord(sn[10]),2));
     if tmpnum=0 then
        tmpnum:=65535;
     if tmpnum<=180 then
        sndesc.lastdate:=date+tmpnum
     else
        sndesc.lastdate:=YEAR2000+tmpnum;
     sndesc.Size:=32;
     KEYCHECK:=strtoint('$'+inttohex(ord(sn[1]),2)+inttohex(ord(sn[2]),2)
             +inttohex(ord(sn[3]),2)+inttohex(ord(sn[4]),2));
     TMPNUM:=2147483648;
     FOR I:=31 DOWNTO 0 DO BEGIN
         IF I<31 THEN
            TMPNUM:=TMPNUM DIV 2;
         IF KEYCHECK>=TMPNUM THEN BEGIN
            KEYCHECK:=KEYCHECK-TMPNUM;
            SNDESC.Bits[I]:=TRUE;
         END ELSE
            SNDESC.Bits[I]:=FALSE;
     END;
     result:=true;
end;
FUNCTION MAKEID(const GUESTID:LONGWORD;THISDATE:TDATETIME;const key:string;VAR SERVICEID:STRING):BOOLEAN;
VAR
   TMPSTR,TMPID:STRING;
   TMPDATE:INTEGER;
   I:BYTE;
BEGIN
     RESULT:=FALSE;
     SERVICEID:='';
     TMPSTR:=INTTOHEX(GUESTID,6);
     TMPDATE:=ROUND(THISDATE-YEAR2000);
     IF TMPDATE<0 THEN
        TMPDATE:=0;
     TMPSTR:=TMPSTR+INTTOHEX(TMPDATE,4);
     SETLENGTH(TMPID,6);
     TMPDATE:=0;
     FOR I:=1 TO 5 DO BEGIN
         TMPID[I]:=CHR(STRTOINT('$'+TMPSTR[I*2-1]+TMPSTR[I*2]));
         TMPDATE:=TMPDATE+ORD(TMPID[I]);
     END;
     TMPDATE:=tmpdate mod 255;
     TMPID[6]:=CHR(TMPDATE);
     tmpstr:=cryptSTRING(tmpID,KEY);
     IF TMPSTR='' THEN
        EXIT;
     TMPDATE:=ORD(TMPSTR[6]);
     TMPSTR:=COPY(TMPSTR,1,5);
     SETLENGTH(TMPID,10);
     FOR I:=0 TO 9 DO
         TMPID[I+1]:=CHR((TMPDATE+I) MOD 255);
     TMPSTR:=CRYPTSTRING(TMPSTR,TMPID);
     IF TMPSTR='' THEN
        EXIT;
     TMPSTR:=TMPSTR+CHR(TMPDATE);
     FOR I:=1 TO 6 DO
         SERVICEID:=SERVICEID+INTTOHEX(ORD(TMPSTR[I]),2);
     RESULT:=TRUE;
END;

FUNCTION MAKESID(const GUESTID:LONGWORD;VAR SERVICEID:STRING):BOOLEAN;
BEGIN
     result:=makeid(guestid,date,'This is Adel Service ID(ASID)',serviceid);
END;

FUNCTION DECRYPTID(const SOURCE,key:STRING;VAR GUESTID:LONGWORD;VAR LASTDATE:TDATETIME):BOOLEAN;
VAR
   S1,S2:STRING;
   I,DATE1,TMPNUM:LONGINT;
BEGIN
     RESULT:=FALSE;
     IF LENGTH(SOURCE)<>12 THEN
        EXIT;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区激情| 婷婷中文字幕综合| 久久久午夜电影| 久久综合成人精品亚洲另类欧美| 欧美一区日本一区韩国一区| 欧美日韩在线直播| 91黄色激情网站| 欧美日韩一区二区三区在线| 欧亚一区二区三区| 欧美乱妇15p| 欧美一级高清大全免费观看| 337p亚洲精品色噜噜噜| 日韩欧美国产不卡| 日韩精品一区二区在线观看| 久久人人爽爽爽人久久久| 久久久国产精品午夜一区ai换脸| 欧美激情在线免费观看| ㊣最新国产の精品bt伙计久久| 亚洲人成人一区二区在线观看 | 色综合一个色综合| 在线精品视频一区二区三四| 欧美日韩精品一区二区| 精品国产伦一区二区三区观看方式 | 欧美午夜精品免费| 欧美大片国产精品| 国产精品久久久久久久蜜臀 | 亚洲精品在线网站| 日韩理论在线观看| 日韩电影在线一区二区三区| 国产另类ts人妖一区二区| 91同城在线观看| 日韩一区二区不卡| 国产精品乱码人人做人人爱| 亚洲香肠在线观看| 狠狠色综合日日| 91国产成人在线| 久久亚洲综合色一区二区三区| 亚洲激情成人在线| 国产精品资源在线观看| 欧美人伦禁忌dvd放荡欲情| 国产精品色在线观看| 首页国产欧美久久| 91麻豆免费观看| 欧美岛国在线观看| 丝瓜av网站精品一区二区| 国产成人精品免费网站| 欧美一级xxx| 亚洲美女淫视频| 懂色av一区二区三区免费看| 欧美日韩国产免费| 亚洲精品欧美激情| 风流少妇一区二区| 日韩美女天天操| 亚洲成av人片在线观看无码| 成人激情黄色小说| 国产校园另类小说区| 青青草原综合久久大伊人精品优势 | 91久久一区二区| 国产精品久线在线观看| 国产一区二区伦理片| 69成人精品免费视频| 亚洲一二三级电影| 色综合天天综合色综合av | 国产一区二区精品久久| 51精品视频一区二区三区| 亚洲一区在线免费观看| 91丨porny丨在线| 国产精品久久久久婷婷二区次| 国产精品一区不卡| 久久精品一区蜜桃臀影院| 久久国产精品无码网站| 日韩写真欧美这视频| 午夜在线电影亚洲一区| 欧美精品一卡两卡| 日韩精品国产欧美| 日韩三级高清在线| 捆绑变态av一区二区三区| 777奇米成人网| 久久99热99| 久久久亚洲高清| 成人免费高清在线观看| 国产精品久久久久一区| 欧美最新大片在线看 | 日韩欧美视频在线| 激情丁香综合五月| 国产视频一区二区在线观看| 国产精品99久| 亚洲精品乱码久久久久久| 日本伦理一区二区| 日韩经典一区二区| 亚洲精品一区二区三区影院| 成人一级视频在线观看| 亚洲女爱视频在线| 欧美日韩一级二级三级| 久久国产尿小便嘘嘘| 欧美国产禁国产网站cc| 欧美在线一二三四区| 免费一级片91| 日本一区二区成人在线| 色婷婷av一区二区三区软件| 日韩激情在线观看| 国产精品视频一二三区| 欧美日韩国产综合一区二区三区| 看国产成人h片视频| 中文字幕一区二区三区四区| 9191国产精品| av电影在线不卡| 另类中文字幕网| 中文字幕一区二区三| 日韩欧美一二三| 色婷婷综合久久久中文字幕| 黄色资源网久久资源365| 亚洲免费在线电影| 精品国产免费一区二区三区四区| 色综合久久精品| 国产精品69毛片高清亚洲| 亚洲成av人片一区二区三区| 日本一区二区三区dvd视频在线| 欧美日韩一区成人| 91丨porny丨户外露出| 国产最新精品精品你懂的| 亚洲1区2区3区4区| 亚洲婷婷综合色高清在线| 26uuu色噜噜精品一区二区| 欧美影视一区二区三区| a在线欧美一区| 国产成人亚洲精品青草天美| 亚洲sss视频在线视频| 亚洲天堂精品在线观看| 久久精品一区四区| 欧美大尺度电影在线| 欧美日韩视频不卡| 欧美中文一区二区三区| 成人久久视频在线观看| 国产乱理伦片在线观看夜一区| 日韩精品成人一区二区三区| 亚洲国产精品麻豆| 亚洲国产精品麻豆| 亚洲一线二线三线久久久| 亚洲精品乱码久久久久久黑人| 国产精品久久久久久久久快鸭| 国产日产欧美一区二区三区| 久久久午夜电影| 久久久www成人免费无遮挡大片| 精品久久久网站| 精品女同一区二区| 久久亚洲一级片| 精品成人一区二区三区| 精品国产一区二区三区久久影院| 欧美一区二区三区视频免费播放 | 欧美国产禁国产网站cc| 中文av一区二区| 最新中文字幕一区二区三区| 中文字幕亚洲在| 亚洲精品你懂的| 视频一区二区中文字幕| 日韩中文欧美在线| 捆绑调教一区二区三区| 国产综合色在线视频区| 国产精品 欧美精品| 成人午夜在线免费| 91亚洲永久精品| 欧美在线视频全部完| 欧美一区二区三区视频在线 | 亚洲一区二区三区视频在线播放| 亚洲精品成人在线| 亚洲午夜精品网| 久久99精品久久久久久久久久久久 | 欧美精品一区二区三区在线 | 欧美日韩国产高清一区二区三区| 91国偷自产一区二区使用方法| 欧美日韩精品欧美日韩精品 | 91精品久久久久久久99蜜桃| 欧美一级电影网站| 国产欧美一区视频| 亚洲午夜久久久久中文字幕久| 日本aⅴ亚洲精品中文乱码| 国产精品一区在线观看乱码| 99久久99久久久精品齐齐| 69堂精品视频| 国产精品久久综合| 天天综合网天天综合色| 精品系列免费在线观看| 色综合色狠狠天天综合色| 欧美日韩成人高清| 亚洲国产精品t66y| 视频在线观看一区二区三区| 国产成人激情av| 日韩亚洲欧美在线| 亚洲人成网站精品片在线观看| 麻豆精品在线播放| 91丨porny丨在线| 久久婷婷国产综合国色天香| 亚洲国产日韩a在线播放性色| 国产一区二区0| 欧美日本韩国一区| 亚洲精选一二三| 国产成人亚洲综合a∨婷婷 | 粉嫩av一区二区三区| 777a∨成人精品桃花网|