; //--文字列暗号化/復号化モジュール mod_endec.as--// #module "mod_endec" ; endec p1,p2,p3 ; p1 val 暗号化/復号化する文字列が入った変数(暗号化/復号化後の文字列もこの変数に入ります) ; p2 val Pass(2〜3の場合は数値型変数 それ以外は文字列型変数) ; p3 0〜5 (0) 暗号化/復号化の形式(0〜1:EnDec 2〜3:int[数値] 4〜5:EnDec+Pass認証 どれも偶数が暗号化 奇数が復号化) ; intの場合1〜9890の間以外では正常に暗号化/復号化できない ; #deffunc endec val,val,int mref endecs,2 mref strs,64 pa=0:u=0:pz=0 strs=0 sdim b,32768:sdim c,32768:sdim d,32768:sdim e,32768:sdim y,32768 b="":c="":d="":e="":y="" if (endecs<=0)|(endecs>=6){ ;形式が0(EnDec - Encode)もしくは指定無しの場合 mref a,24 mref p,25 strlen pz,p repeat pz peek u,p,cnt pa+=u*(cnt+1) await 1 loop strlen z,a repeat z peek b,a,cnt b+=pa poke c,cnt,b await 1 loop strmid a,c,0,z } if endecs=1{ ;形式が1(EnDec - Decode)の場合 mref c,24 mref p,25 strlen pz,p repeat pz u=0 peek u,p,cnt pa+=u*(cnt+1) await 1 loop strlen z,c repeat z peek d,c,cnt d-=pa poke e,cnt,d await 1 loop strmid c,e,0,z } if endecs=2{ ;形式が2(int - Encode)の場合 mref a,24 mref p,17 xc=256 repeat 100 if p=xc:p=xc-1:break xc=xc*2 loop str p strlen pz,p int p pa=p*pz+1 y=a a=""+p+""+y strlen z,a repeat z peek b,a,cnt b+=pa poke c,cnt,b await 1 loop a=c } if endecs=3{ ;形式が3(int - Decode)の場合 mref a,24 mref p,17 xc=256 repeat 100 if p=xc:p=xc-1:break xc=xc*2 loop str p strlen pz,p int p pa=p*pz+1 strlen z,a repeat z peek b,a,cnt b-=pa poke c,cnt,b await 1 loop pas=""+p+"" strlen pz,pas strmid pss,c,0,pz z=z-pz-1 if pss=pas:strmid a,c,pz,z:else:strs=-1:a="" } if endecs=4{ ;形式が4(EnDec+Pass認証 - Encode)の場合 mref a,24 mref p,25 ps=p strlen pz,p repeat pz peek u,p,cnt pa+=u*(cnt+1) await 1 loop y=a a=""+p+""+y strlen z,a repeat z peek b,a,cnt b+=pa poke c,cnt,b await 1 loop a=c p=ps } if endecs=5{ ;形式が5(EnDec+Pass認証 - Decode)の場合 mref c,24 mref p,25 strlen pz,p repeat pz u=0 peek u,p,cnt pa+=u*(cnt+1) await 1 loop strlen z,c za=z repeat z peek d,c,cnt d-=pa poke e,cnt,d await 1 loop strmid pss,e,0,pz if pss=p{ za=z-pz if pz<=8:strmid c,e,pz,z-pz-1:else:strmid c,e,pz,z-pz-2 }else{ strs=-1:c="" } } pa=0 return #global