|
@@ -0,0 +1,464 @@
|
|
|
+package com.rf.psychological;
|
|
|
+
|
|
|
+public class SoftKey {
|
|
|
+
|
|
|
+ com.softkey.jsyunew3 j9;
|
|
|
+ public SoftKey()
|
|
|
+ {
|
|
|
+ j9=new com.softkey.jsyunew3();
|
|
|
+ }
|
|
|
+
|
|
|
+ private String myhex(byte indata)
|
|
|
+ {
|
|
|
+ String outString;
|
|
|
+ outString=String.format("%X",indata);
|
|
|
+ if(outString.length()<2)outString="0"+outString;
|
|
|
+ return outString;
|
|
|
+ }
|
|
|
+
|
|
|
+ //若某字节为负数则需将其转成无符号正数
|
|
|
+ private long conver(byte temp){
|
|
|
+ long tempInt = (int)temp;
|
|
|
+ if(tempInt < 0){
|
|
|
+ tempInt += 256;
|
|
|
+ }
|
|
|
+ return tempInt;
|
|
|
+ }
|
|
|
+
|
|
|
+ //以下用于将16进制字符串转化为无符号长整型
|
|
|
+ private int HexToInt(String s)
|
|
|
+ {
|
|
|
+ String [] hexch = { "0", "1", "2", "3", "4", "5", "6", "7",
|
|
|
+ "8", "9", "A", "B", "C", "D", "E", "F"};
|
|
|
+ int i, j;
|
|
|
+ int r, n, k;
|
|
|
+ String ch;
|
|
|
+
|
|
|
+ k = 1; r = 0;
|
|
|
+ for (i = s.length(); i > 0; i--)
|
|
|
+ {
|
|
|
+ ch = s.substring(i - 1, i-1+1);
|
|
|
+ n = 0;
|
|
|
+ for (j = 0; j < 16; j++)
|
|
|
+ {
|
|
|
+ if (ch.compareToIgnoreCase(hexch[j]) ==0 )
|
|
|
+ {
|
|
|
+ n = j;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ r += (n * k);
|
|
|
+ k *= 16;
|
|
|
+ }
|
|
|
+ return r;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public String StrEnc(String InString , String Key)//使用增强算法,加密字符串
|
|
|
+ {
|
|
|
+
|
|
|
+ byte [] b,outb;
|
|
|
+ byte []temp_b=InString.getBytes();
|
|
|
+ byte [] temp=new byte[8],outtemp=new byte[8];
|
|
|
+ int n,i,nlen,outlen;
|
|
|
+ String outString;
|
|
|
+
|
|
|
+ nlen = temp_b.length;
|
|
|
+ nlen=nlen+1;
|
|
|
+ if( nlen < 8 )
|
|
|
+ outlen = 8;
|
|
|
+ else
|
|
|
+ outlen = nlen;
|
|
|
+ b=new byte[outlen];
|
|
|
+ outb=new byte[outlen];
|
|
|
+
|
|
|
+ for(n=0;n<nlen-1;n++)
|
|
|
+ {
|
|
|
+ b[n]=temp_b[n];
|
|
|
+ }
|
|
|
+
|
|
|
+ outb=b.clone();
|
|
|
+
|
|
|
+ for( n = 0; n<=outlen - 8 ;n=n+ 8)
|
|
|
+ {
|
|
|
+ for (i = 0; i < 8; i++) temp[i] = b[i + n];
|
|
|
+ EnCode(temp, outtemp, Key);
|
|
|
+ for( i = 0 ;i<8;i++) outb[i + n] = outtemp[i];
|
|
|
+ }
|
|
|
+
|
|
|
+ outString = "";
|
|
|
+ for (n = 0 ;n<= outlen - 1;n++)
|
|
|
+ {
|
|
|
+ outString = outString +myhex(outb[n]) ;
|
|
|
+ }
|
|
|
+ return outString;
|
|
|
+ }
|
|
|
+
|
|
|
+ public String StrDec(String InString , String Key)//使用增强算法,解密字符串
|
|
|
+ {
|
|
|
+
|
|
|
+ byte [] b,outb;
|
|
|
+ byte [] temp=new byte[8],outtemp=new byte[8];
|
|
|
+ int n,i,nlen,outlen;
|
|
|
+ String outString,temp_String;
|
|
|
+
|
|
|
+
|
|
|
+ nlen = InString.length();
|
|
|
+ if( nlen < 16 ) outlen = 16;
|
|
|
+ outlen = nlen / 2;
|
|
|
+ b=new byte[outlen];
|
|
|
+ outb=new byte[outlen];
|
|
|
+
|
|
|
+ i = 0;
|
|
|
+ for (n = 1 ;n<= nlen ;n=n+2)
|
|
|
+ {
|
|
|
+ temp_String = InString.substring(n-1, n-1+2);
|
|
|
+ b[i] = (byte)HexToInt(temp_String);
|
|
|
+ i = i + 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ outb=b.clone();
|
|
|
+
|
|
|
+ for( n = 0; n<=outlen - 8 ;n=n+ 8)
|
|
|
+ {
|
|
|
+ for (i = 0; i < 8; i++) temp[i] = b[i + n];
|
|
|
+ DeCode(temp, outtemp, Key);
|
|
|
+ for( i = 0 ;i<8;i++) outb[i + n] = outtemp[i];
|
|
|
+ }
|
|
|
+
|
|
|
+ outString=new String(outb);
|
|
|
+ outString=outString.trim();
|
|
|
+ return outString;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void EnCode(byte[] inb, byte[] outb, String Key )
|
|
|
+ {
|
|
|
+
|
|
|
+ long cnDelta,y,z,a,b,c,d,temp_2;
|
|
|
+ long [] buf=new long[16];
|
|
|
+ int n,i,nlen;
|
|
|
+ long sum;
|
|
|
+ long temp,temp_1;
|
|
|
+ long mask=4294967295L;
|
|
|
+
|
|
|
+ //UInt32 temp, temp_1;
|
|
|
+ String temp_String ;
|
|
|
+
|
|
|
+
|
|
|
+ cnDelta = 2654435769L;
|
|
|
+ sum = 0;
|
|
|
+
|
|
|
+ nlen = Key.length();
|
|
|
+ i = 0;
|
|
|
+ for( n = 1 ;n<= nlen ;n=n+2)
|
|
|
+ {
|
|
|
+ temp_String =Key.substring(n-1, n-1+2);
|
|
|
+ buf[i] =HexToInt(temp_String);
|
|
|
+ i = i + 1;
|
|
|
+ }
|
|
|
+ a = 0 ; b = 0 ; c = 0 ; d = 0;
|
|
|
+ for(n = 0;n<=3;n++)
|
|
|
+ {
|
|
|
+ a = (buf[n] << (n * 8)) | a;
|
|
|
+ b = (buf[n + 4] << (n * 8)) | b;
|
|
|
+ c = (buf[n + 4 + 4] << (n * 8)) | c;
|
|
|
+ d = (buf[n + 4 + 4 + 4] << (n * 8)) | d;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ y = 0;
|
|
|
+ z = 0;
|
|
|
+ for(n = 0;n<=3;n++)
|
|
|
+ {
|
|
|
+ temp_2 = conver(inb[n]);
|
|
|
+ y = (temp_2 << (n * 8)) | y;
|
|
|
+ temp_2 = conver(inb[n + 4]);
|
|
|
+ z = (temp_2 << (n * 8)) | z;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ n = 32;
|
|
|
+
|
|
|
+ while (n > 0)
|
|
|
+ {
|
|
|
+ sum = (cnDelta + sum)& mask;
|
|
|
+
|
|
|
+ temp = (z << 4) & mask;
|
|
|
+ temp = (temp + a) & mask;
|
|
|
+ temp_1 = (z + sum) & mask;
|
|
|
+ temp = (temp ^ temp_1) & mask;
|
|
|
+ temp_1 = (z >> 5) & mask;
|
|
|
+ temp_1 = (temp_1 + b) & mask;
|
|
|
+ temp = (temp ^ temp_1) & mask;
|
|
|
+ temp = (temp + y) & mask;
|
|
|
+ y = temp & mask;
|
|
|
+ /*y += ((z << 4) + a) ^ (z + sum) ^ ((z >> 5) + b); */
|
|
|
+
|
|
|
+ temp = (y << 4) & mask;
|
|
|
+ temp = (temp + c) & mask;
|
|
|
+ temp_1 = (y + sum) & mask;
|
|
|
+ temp = (temp ^ temp_1) & mask;
|
|
|
+ temp_1 = (y >> 5) & mask;
|
|
|
+ temp_1 = (temp_1 + d) & mask;
|
|
|
+ temp = (temp ^ temp_1) & mask;
|
|
|
+ temp = (z + temp) & mask;
|
|
|
+ z = temp & mask;
|
|
|
+ /* z += ((y << 4) + c) ^ (y + sum) ^ ((y >> 5) + d); */
|
|
|
+ n = n - 1;
|
|
|
+
|
|
|
+ }
|
|
|
+ for(n = 0;n<=3;n++)
|
|
|
+ {
|
|
|
+ outb[n] = (byte)((y >>> (n * 8)) & 255);
|
|
|
+ outb[n + 4] =(byte)((z >>> (n * 8)) & 255);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void DeCode(byte[] inb, byte[] outb, String Key )
|
|
|
+ {
|
|
|
+
|
|
|
+ long cnDelta,y,z,a,b,c,d,temp_2;
|
|
|
+ long [] buf=new long[16];
|
|
|
+ int n,i,nlen;
|
|
|
+ long sum;
|
|
|
+ long temp,temp_1;
|
|
|
+
|
|
|
+ long mask=4294967295L;
|
|
|
+
|
|
|
+ //UInt32 temp, temp_1;
|
|
|
+ String temp_String ;
|
|
|
+
|
|
|
+
|
|
|
+ cnDelta = 2654435769L;
|
|
|
+ sum = 3337565984L;
|
|
|
+
|
|
|
+ nlen = Key.length();
|
|
|
+ i = 0;
|
|
|
+ for( n = 1 ;n<= nlen ;n=n+2)
|
|
|
+ {
|
|
|
+ temp_String =Key.substring(n-1, n-1+2);
|
|
|
+ buf[i] =HexToInt(temp_String);
|
|
|
+ i = i + 1;
|
|
|
+ }
|
|
|
+ a = 0 ; b = 0 ; c = 0 ; d = 0;
|
|
|
+ for(n = 0;n<=3;n++)
|
|
|
+ {
|
|
|
+ a = (buf[n] << (n * 8)) | a;
|
|
|
+ b = (buf[n + 4] << (n * 8)) | b;
|
|
|
+ c = (buf[n + 4 + 4] << (n * 8)) | c;
|
|
|
+ d = (buf[n + 4 + 4 + 4] << (n * 8)) | d;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ y = 0;
|
|
|
+ z = 0;
|
|
|
+ for(n = 0;n<=3;n++)
|
|
|
+ {
|
|
|
+ temp_2 = conver(inb[n]);
|
|
|
+ y = (temp_2 << (n * 8)) | y;
|
|
|
+ temp_2 = conver(inb[n + 4]);
|
|
|
+ z = (temp_2 << (n * 8)) | z;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ n = 32;
|
|
|
+
|
|
|
+ while (n > 0)
|
|
|
+ {
|
|
|
+
|
|
|
+
|
|
|
+ temp = (y << 4) & mask;
|
|
|
+ temp = (temp + c) & mask;
|
|
|
+ temp_1 = (y + sum) & mask;
|
|
|
+ temp = (temp ^ temp_1) & mask;
|
|
|
+ temp_1 = (y >> 5) & mask;
|
|
|
+ temp_1 = (temp_1 + d) & mask;
|
|
|
+ temp = (temp ^ temp_1) & mask;
|
|
|
+ temp = (z - temp) & mask;
|
|
|
+ z = temp & mask;
|
|
|
+ /* z += ((y << 4) + c) ^ (y + sum) ^ ((y >> 5) + d); */
|
|
|
+
|
|
|
+ temp = (z << 4) & mask;
|
|
|
+ temp = (temp + a) & mask;
|
|
|
+ temp_1 = (z + sum) & mask;
|
|
|
+ temp = (temp ^ temp_1) & mask;
|
|
|
+ temp_1 = (z >> 5) & mask;
|
|
|
+ temp_1 = (temp_1 + b) & mask;
|
|
|
+ temp = (temp ^ temp_1) & mask;
|
|
|
+ temp = (y - temp ) & mask;
|
|
|
+ y = temp & mask;
|
|
|
+ /*y += ((z << 4) + a) ^ (z + sum) ^ ((z >> 5) + b); */
|
|
|
+
|
|
|
+ sum = (sum-cnDelta)& mask;
|
|
|
+ n = n - 1;
|
|
|
+
|
|
|
+ }
|
|
|
+ for(n = 0;n<=3;n++)
|
|
|
+ {
|
|
|
+ outb[n] = (byte)((y >>> (n * 8)) & 255);
|
|
|
+ outb[n + 4] =(byte)((z >>> (n * 8)) & 255);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public long get_LastError()
|
|
|
+ {
|
|
|
+ return j9.get_LastError();
|
|
|
+ }
|
|
|
+
|
|
|
+ public String FindPort(int start)
|
|
|
+ {
|
|
|
+ return j9.FindPort(start);
|
|
|
+ }
|
|
|
+
|
|
|
+ public int CheckKeyByFindort_2()
|
|
|
+ {
|
|
|
+ //使用普通算法一查找指定的加密锁
|
|
|
+ String DevicePath = ""; //用于储存加密锁所在的路径
|
|
|
+ DevicePath = j9.FindPort_2(0, 1, 906093537);
|
|
|
+ int ret = (int)j9.get_LastError();
|
|
|
+ j9.CloseUsbHandle(DevicePath);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //使用带长度的方法从指定的地址读取字符串
|
|
|
+ private String ReadStringEx(int addr, String DevicePath)
|
|
|
+ {
|
|
|
+ int nlen, ret;
|
|
|
+ byte[] buf = new byte[1];
|
|
|
+ //先从地址0读到以前写入的字符串的长度
|
|
|
+ ret = j9.YReadEx((short)addr, (short)1, "1A3C9CD6", "721238E7", DevicePath);
|
|
|
+ if (ret != 0) return "";
|
|
|
+ nlen = j9.GetBuf(0);
|
|
|
+ //再读取相应长度的字符串
|
|
|
+ return j9.NewReadString(addr + 1, nlen, "1A3C9CD6", "721238E7", DevicePath);
|
|
|
+
|
|
|
+ }
|
|
|
+ //使用从储存器读取相应数据的方式检查是否存在指定的加密锁
|
|
|
+ public int CheckKeyByReadEprom()
|
|
|
+ {
|
|
|
+ int n, ret;
|
|
|
+ String DevicePath = "";//用于储存加密锁所在的路径
|
|
|
+ String outString = "";
|
|
|
+ //@NoUseCode_data return 1;//如果没有使用这个功能,直接返回1
|
|
|
+ for (n = 0; n < 255; n++)
|
|
|
+ {
|
|
|
+ DevicePath= j9.FindPort(n );
|
|
|
+ if (j9.get_LastError() != 0) return (int)j9.get_LastError();
|
|
|
+ outString = ReadStringEx(10, DevicePath);
|
|
|
+ j9.CloseUsbHandle(DevicePath);
|
|
|
+ if ((j9.get_LastError() == 0) && (outString.compareTo("juemingtechpsychological") == 0))
|
|
|
+ {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return -92;
|
|
|
+ }
|
|
|
+ //使用增强算法一检查加密锁,这个方法可以有效地防止仿真
|
|
|
+ public int CheckKeyByEncstring()
|
|
|
+ {
|
|
|
+ //推荐加密方案:生成随机数,让锁做加密运算,同时在程序中端使用代码做同样的加密运算,然后进行比较判断。
|
|
|
+
|
|
|
+ int n, ret;
|
|
|
+ String DevicePath = "";//用于储存加密锁所在的路径
|
|
|
+ String InString;
|
|
|
+
|
|
|
+ //@NoUseKeyEx return 1;//如果没有使用这个功能,直接返回1
|
|
|
+ int number1=(int)(Math.random()*65535)+1;
|
|
|
+ int number2=(int)(Math.random()*65535)+1;
|
|
|
+
|
|
|
+ InString = (new Integer(number1)).toString() + (new Integer(number2)).toString();
|
|
|
+
|
|
|
+ for (n = 0; n < 255; n++)
|
|
|
+ {
|
|
|
+ DevicePath= j9.FindPort(n );
|
|
|
+ if (j9.get_LastError() != 0) return (int)j9.get_LastError();
|
|
|
+ if (Sub_CheckKeyByEncString(InString, DevicePath) == 0)
|
|
|
+ {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return -92;
|
|
|
+ }
|
|
|
+
|
|
|
+ private int Sub_CheckKeyByEncString(String InString, String DevicePath)
|
|
|
+ {
|
|
|
+ //使用增强算法一对字符串进行加密
|
|
|
+ int ret;
|
|
|
+ String outString = "";
|
|
|
+ String outString_2;
|
|
|
+ outString = j9.EncString(InString,DevicePath);
|
|
|
+ if (j9.get_LastError() != 0) return (int)j9.get_LastError();
|
|
|
+ outString_2 = StrEnc(InString, "BEB3509AF8C1E52E77E75CBF92761AC9");
|
|
|
+ if (outString_2.compareTo(outString) == 0)//比较结果是否相符
|
|
|
+ {
|
|
|
+ ret = 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ret = -92;
|
|
|
+ }
|
|
|
+ j9.CloseUsbHandle(DevicePath);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+ //使用增强算法二检查是否存在对应的加密锁
|
|
|
+ public int CheckKeyByEncstring_New()
|
|
|
+ {
|
|
|
+ int n, ret;
|
|
|
+ String DevicePath = "";//用于储存加密锁所在的路径
|
|
|
+ String outString = "";
|
|
|
+ int myrnd = (int)(Math.random() * 500);
|
|
|
+ String[] EncInString ={ "4825","22097","277","22847","8030","22823","8027","10774","18914","8835","2192","16031","15311","24102","16749","28844","12205","1139","26830","19377","19239","19563","25005","3775","6408","15794","7459","20102","9017","25223",
|
|
|
+ "1129","14171","11460","6607","731","28461","3027","2314","12273","6034","9136","11867","6472","28599","32452","4739","11414","5747","2205","6885","16824","27700","26591","31618","17576","5390","30809","18686","32638","6835",
|
|
|
+ "25843","10905","1142","11892","25015","11317","14312","2885","1487","12373","31312","30644","17797","539","29255","26616","3140","1865","30343","16352","30355","4671","6123","13535","11296","21505","19306","20485","22962","28209",
|
|
|
+ "13346","4104","19253","9490","3403","11062","9650","12675","13374","29058","16723","13064","21111","20096","9058","16835","10127","27488","6218","8309","29504","28917","28050","3713","32612","27057","19432","14825","18933","17317",
|
|
|
+ "12564","20814","20238","29316","2560","13811","29415","12703","27829","19897","3036","26089","29279","29987","3174","8180","12616","4435","19743","15857","22232","16906","30400","11699","24986","13227","3110","20139","31544","4408",
|
|
|
+ "5193","29676","29309","5714","25665","1577","21842","16700","2381","17841","10945","9431","21186","11384","19700","23206","31772","28687","25397","5323","30454","9130","31726","20487","21769","31256","18089","9661","21040","10190",
|
|
|
+ "28177","15855","32355","25820","4591","24894","1982","3829","24876","10989","9337","27498","21460","23261","7408","2351","1296","18321","30107","17107","11562","28715","14614","24714","15244","11884","25114","23078","4289","2232",
|
|
|
+ "25985","14617","22641","9230","23622","6772","872","22034","19841","20713","24974","22278","6254","9932","23535","5068","32357","16397","20148","8165","19682","7231","808","18291","10110","14483","18867","16697","29171","20956",
|
|
|
+ "13280","154","23067","18059","28249","10133","497","6324","15081","6350","18829","4103","2681","10631","14635","31701","14099","29601","2852","5396","24032","18335","22001","83","22829","16035","22062","28611","23137","27758",
|
|
|
+ "22676","25913","9224","12644","17405","5158","25546","11396","17251","25499","11379","19826","4065","4171","4076","1648","23215","28295","22846","7776","22313","19522","26261","8899","25800","29453","9018","31163","22822","18972",
|
|
|
+ "8600","5132","27132","6207","21814","16149","14119","26088","27842","5851","29854","32554","19460","6143","13437","5560","9702","20929","20732","737","13937","14342","30326","10649","7378","5454","19815","30833","21839","7356",
|
|
|
+ "17510","2973","21333","7185","31277","28396","15214","19887","18329","32722","15682","19098","27041","28514","3485","7283","19296","25676","104","28538","28689","15586","17069","25747","32012","28951","13462","833","25549","5245",
|
|
|
+ "25452","19363","11246","30789","9116","26749","23846","27970","19117","306","2387","9702","2379","11201","30315","14402","25918","32462","26764","16392","21362","17307","3054","8332","29168","18442","32490","26302","25058","20636",
|
|
|
+ "31740","19248","16786","10868","9149","21526","18026","23890","26343","5952","30452","32155","4181","7200","1244","7760","28414","24009","18152","25362","8192","27885","21252","12836","30866","12765","14395","1640","4113","20108",
|
|
|
+ "22710","24926","27123","8332","25535","23851","16341","25358","28608","24208","27504","28901","13380","26349","28830","9859","25587","1608","10074","25593","9881","27966","1468","12026","13087","7958","2560","29911","2447","17326",
|
|
|
+ "17534","27779","19730","6538","434","6288","15861","1996","5173","26927","21407","20533","16065","32306","30363","24872","15920","2318","23187","18342","29564","20176","30802","16723","11712","18990","10177","28270","5173","28024",
|
|
|
+ "23018","9180","12340","1186","29430","23837","5945","14139","17458","20051","13533","10872","9733","5698","13530","17192","12795","4170","3338","1984" };
|
|
|
+ String[] EncOutString ={ "3F1B3DE135D03E09","CADD0B404E65FB85","6B581766C267623C","6DEE7D536F50C1D6","CE25247FF431AB3A","74F5D2DFD964206F","5AF29BE86EA0F510","3C9F5A2304F05C89","EFA7D80CFF709DD0","3552F1F3B4537267","DE01B9B5B78BF68C","0DFBB8FB95DBEE2F","35F5CD15590FB2A4","BC87119A73F73BCC","E3E5BC3896B738B6","BB1A595B7BC2411B","329E4B0C3DD150D2","4CCA7D30AEA9A2D6","761E764D49E32B5A","607A4D3AE9AC0967","B50F65D1F61CC696","06F29EAF3356E91A","4AA0FEF948984F28","18632DE203FEDFC7","A37114D9568E4279","D1645474D9334670","E7519DF79C46B33B","9C5526743C6CC1FC","E2CDFD6D0692355E","547E8E6373422FE3",
|
|
|
+ "50AFBE408DE2804B","1B255AEC1743B3B4","4974E357116F43CF","8DD34A56922A7DCC","D2608F2DE3216979","E4A68CB7D78E4403","577020502A799560","A3859970E09442C7","06ABAC39D92ACA28","C84E48503ED8DCA0","A627F65EA2E6FB3C","C0ADDEC824C7712E","BD8F89121AB9088F","36DAA0B2D95C6605","9EA9ADB38D9A2933","9493065B56CAA911","73D237A3E40A9F7A","CDEB70B5DCEE1DE1","CBFDD98387420E4F","92E01AC4B4144D9C","36E4159CE7517525","B487FA4D333B381B","D333ECC864DFA6CA","BD29ED01FDE44213","8856D2E4974B2F0D","CEE2828F2B3D134B","1BB7B5D96B2A274C","0B9DDCA29509C52A","4D6C6C8493C3B47F","EADD33CD816F623A",
|
|
|
+ "FFFBD05BA2E8D0FD","7970FB5C5A8E28BE","EE5E2A39330BB58F","BAB30065E8426519","F56940F4145E984C","FB82882CF8C19D0A","FD49BB7DAC1535CC","45F36354520B2F87","0CF9BF031F634C40","E18D7E4943174725","7E07F363D6FFD328","5CD5629655F10C3F","498CAF35D4A4AFC2","8C5BF9EDB24FBF9C","5E1188CE3215ED4F","E51998E333663AD1","5415C2D280CC6210","970AD41834992D0A","3E4517DACD48A065","67E991B7DB6891D6","0D06D2631B4F930A","D771836E42A87FFC","AE7449D28C4DA6FE","AD5B1E735CCBA92A","03FCA836D80917BF","69BD8C8C8E9BA59E","AD3BC0D1106EA7F9","67287DB3EF83E7D1","845642B77EBA3138","9B6EE848E771972D",
|
|
|
+ "E2B78C3E5D8FCB45","0B34DA3F8B7BB289","6C588DCE4D4253F8","3310F7D913257E24","92B2689C58E9D503","4B575475C2FA91A8","3CC1115AA57E8CE6","FA4802F54D032F76","A01A03C08365851D","30F60E06B08433BD","45A0D2D732C24E94","AE3932304708BB59","11BD1422F7176E28","87A3C7E1F2E0B68C","ECEA2AAACE4C5F60","73E2C6467A0CD6A2","A143037611A07AB5","2E1870FB715B968B","AE10DF0C9DF5EF43","857B0F0452FCC1E4","7FDEB418DC8F0FD7","F0C9369B81866417","D800C7F020DE30BE","4BCAE5EED4B7550E","3B596C8077D915C9","D560D5A007C81043","8FC2A34B1354F4A1","7AB9443BF19685F2","97EB87C0633D0DC3","A5EA3B3CACABBC51",
|
|
|
+ "8EF416CDF00B86E7","CFDBBDA2141F9BC7","1A573B62FBCA6D89","8A0553C323EF4907","0027F3F80D3AD64E","6758E705C629884C","6ACF54D1FBE5214A","76158789C60530C9","6A8D42A8DDDF3A4B","FA699A85C2817AD6","97A1189890EAE6E1","E34BB8A38F02AAFD","BF02F473E3B44C7D","5564D43CC38469C5","8954F95940F0C959","AB61AEA0E61251BC","FBCAB899F6E13AA7","108A7737D6E7BC21","B93198172D842B05","78992C39BD376AE4","D1A7845557192B61","DB65361283E4D3CF","349CA90442511DFE","D9C9FF32EDCC3FD3","663DB9FC7C36DFB5","D2A01FD793C6EB9E","5EB26E0A91987BD7","4058E2FE40D213DC","C19C97C75E74C969","E673DA8C3833FFC7",
|
|
|
+ "7F7327BDEF96E53F","5B051ECB8DE36475","414E503FA94B71E4","E5823E52F195B012","C724161A51F4517A","1E505A3A8BBDE4EA","98E7DCA90CB62CDA","F16AC65D49A69B9E","B4DC18B73FA32736","75A5766AFE412BE7","AD8D99D51ED305A1","8EFBEE25C45D2D24","792DF024D63C22B2","EB1BA836C522CBD2","CF4EEE06B99A8559","51AA39D6628E9977","DE29DBB003A03198","89D71C6D2E1718F8","66A10F1E273F2071","E06156BCF58F7558","43224EA1702DF900","C761F4F4874B3750","C1FC257B8C7965C3","C9BEC254E0DD5185","2B913264785A03FF","9325937C57F6905B","A106618344A2E5ED","F69D0AA3E094FE95","9564D1016D49A77B","5F7B6A494A09E45F",
|
|
|
+ "4F96EBE1B761966F","54B815CCBF6FC05F","7082791EA8CC93D4","9A5873206934F2F3","88406C68A067CD68","05F3F9C8803064E6","3A8D9488A5E5885F","A52807D079642507","51A4B62B3E7BE5B7","A0D097D1993BC4B8","63D5D6E334B17F3D","8DD7F7C3193984D3","FB544D69929E9403","B09511E12F778FAC","ED8F58528785364B","4CDC2C9831030D75","8CE5276263885114","B630CF5F76B1AD74","2ED87918B3465FFF","1CEF3652E51A74DE","23B039C25502472D","EC2ECD90C53E9505","2B8619E5F22C08CD","4A58F0F7FB198308","58B59F9BF05A8D82","57C9D65D665F5A93","E31A3C439BD1AF99","AC30B9B1E1C0D48A","04BB0D6750009981","84E78B49A278BFEF",
|
|
|
+ "36CCCE9A45FDA41F","2BFDF52BBE59674B","4F6332675288C804","3C7736CA07890901","5E4F214DDDD930D7","566B7E4FD652D61C","AEB51809691AB447","77D6586375E0B290","D53C80E61409C613","00AD328FEE8AE173","A65ADF53F759D219","BECDEAAC14BA0815","7E78CC3D875FB740","3F0C50F462B3BAAC","4A1F31D471B810C7","FF18900C10204186","86DF1383DA1FF13B","9FEC87B071979C21","047492C060D757DC","0CEAEB66505E036F","AF35D12EEFF0A847","604B2BB1675F3DB0","61385B32E9DA83A1","28474AA876019CBB","18F39E7044424E1A","ABDF0D72187CFACA","9B99336B3BF8FAA6","949362E1AD003873","D3E1509DE78A86A5","D140C99755A12D04",
|
|
|
+ "A1F43F2DF8D71647","A2A94C368C1D86FC","1CE999F1FAE0DFDD","4447CE77DB8E83DE","63A4B44D037F5CE5","0E718B32A76B6CED","FA88E56785A003F7","9ACCCBC49D687509","99CB5C0310EAE7B6","468D40659705A1BF","5B15D753BCAD5F1F","94431465B0655B16","8D3FF5498E0F5E43","295D4BEBDCB1095B","071FF735B83C4808","DCD28A158CE2E819","B2F5F36BCC04ADF5","E9BBAD0D77300B5B","ACEAEFCCFFA24E72","A8544C2103681D04","A852D11AD3EB7A42","1FCFB28016BBE8F0","82C8881CFF752C05","3E7E9F33A2369FC8","BE83DD9279BE319E","33575303D83D0F95","CB61BBA94088CC96","D849F95FAB34EF5F","D4B48F2B0F747510","555B8B6BA99D3FDD",
|
|
|
+ "F906068FDF947DD4","77F1E39695AE28CC","32FB90B0DEB9D1E3","CD3F11EEDCD3DE59","19853E62F4D26A69","BB3D59EDE88555FE","B36BD705E63478DE","2F1156A076CFF821","F1CAEDD30801BA36","BE038C0236F4512F","7BDB1FD114E57E7D","1CBABB557683552F","F7748D24C39A2740","DE5A9968C5953A97","D28A73C0401771CE","CB7A9887E552DE47","7DBAAAEB3CA0107E","4C367DA9DA7C4B4A","5AD02723DAA637F8","2A51D447872F1955","8A7FF09269E7D4B4","D3542B2397D86D25","9763644C184CE968","CEC00B174538B2EF","C1459847D59DB83F","2D1CBE5908F6E53F","E4FDBBB4ECE78FCD","9EDBA7AA9D431355","4519EC30A1AB8767","61362E1DF9EDB44A",
|
|
|
+ "C5AE7753F3C2C03F","C82E13D6459A1FA6","E1C61691F36D7564","07E70AD5DEA25DB6","1218C1F51E669769","DDDAB4889300780D","694C151D3AF9542F","EFBBF6F67CF79CA7","3973CB80B96374F8","17CD7DD21E25DD26","157D092755ADC54F","8C0E7482BC90FAC7","583D3687F2F30B45","E1CDDCB27CCBFA37","160213B796FE55B9","4EB8EF581026B3B1","D2164A3B635EE826","BAF9824EDDA47A22","EB2168D8D5D32CF0","F66C85F1424AE564","21773B7BC36F88F9","2CC14B755F9A479C","80B5CF87576F7D9D","ED31F3EC9622A188","F04638DFD4A7A0E8","837A3A4C7077DD7C","81F06F00F5EE81E7","90FA775E8A86B63F","C201A4E0094FE7E0","B5DFE1D27928BD4D",
|
|
|
+ "C5F703DDBF701E28","2FFFBAC59416A6E0","CFF020AC6CF6FE5F","1EAEB7043EDBF022","EB1BB2C6134FC5AF","EFF2C9D3754AB965","91CE76A166886ED3","5C538AFF569012F4","0A3AB423B86EA48A","AC71186615657CDD","5F87192EA68AE57E","561B3CAAE182ACD9","F82F16DDC60843ED","5EEFC556C46702DD","BCC88DBFA6DC6264","55F829CAEAAE4A47","ABBD7CD495133157","A7804BAB06C7A499","E1CDAD4C3736F371","842BA8773595FF2C","6C1A0BA0F90A9860","D874FA68BFDB6AB1","158A79103BE0A645","42154325B9D9FA5A","8B4867ED7208C82C","17FFB4D9B49C7CDC","4AA9427F09D55C9A","01B48FAB16806E79","AAD434A9D843D221","5651073281992FF7",
|
|
|
+ "14C5F33A8264156C","842B6AA4CD304D74","2BA718531F8FAF59","A3D58673BF64BAE7","63924429F9350EB7","E9281209B893578A","83347572B2AABC31","CFFB8A0CAE4BA7D3","A5C7FC17282C4FBA","77A8DDC4D399D9C2","90595B0484F62FBE","D2164A3B635EE826","36F54CA4B63A3784","A1562F7CDE3148AC","58DA3069DE7C1CBA","9EE9669648A6337B","88CA16BE09699B48","2637A485BB504E02","6E1F43DA8E841D30","B28331AFF29B1893","CFE841BF3E42B9C0","A093E0AFE2CA9C77","7A3AAEC82156A99A","C73FE298136878F4","9842F89D19745C1B","23A393ADA40819A7","25C65E7B688A7863","8D6625D7C6415F91","85DD67D9B039EB36","647DCFDFAA93FC30",
|
|
|
+ "C94F78EC13F3EEF5","2F835ED5DB7C89FE","5C0D32CC979E7528","8C3B15F6A677796C","62837CBE281B9C98","1A9FF67B76AE74FB","377835B907DDB901","DFE0FE9D06F1A938","53C4D469DF15BB18","BA8EA07F3D1C4A65","E9FDE2A920BF6ACE","4FFF2A58BDE306D9","2390F8408FC53E23","91379414C085A471","872B9D42C18A1242","3C6614D8728F17CD","36B17687606B4E2B","7C67E18CDD8D2A6F","54B8CE4ED0C1D6CC","A191FEBAE31E19AD","D6E8DC7027F7CBA1","EC4BE9AA9179C3CC","3F01C1C7BA8A2F2F","59FFE00A8F4C36B1","5BC832F82ADCFD5B","588A254BC14802E9","BED81A4A0C5CAA93","0091394EF49F9A97","7F3E7E187F3EF74B","0C43C77E0888863A",
|
|
|
+ "42A28CE2D9D1F7AE","3F594869A25DC890","06F1EC66E61574A4","C73FE298136878F4","B0B9BA46BF9B46C1","123C638DF93655D9","BBA509EA3E0F4A2A","64ECF8B82760AD7F","52AD3E39A369A45F","85CB0A99419682D2","B9015A062113AF09","BCE6EC0ECD9BC9ED","59146D7F82D54622","8EA29B72406E7653","DCFEEC7B8BAD5467","1AC626075B0B431B","ACC4E7DA781FCCC1","70CE309FD8CA7831","4824DDE2CE7BB046","CA6B6C95EC5B3792","BCC0A804F2F5B1B2","EC16599C96653A2F","1FE25DCD925B0AD8","8F3D53D3C6FD1CEB","052E6D3EFFA59E3D","9B78019C253A908D","0027F3F80D3AD64E","55E2E28B340D17F9","E29799F1C60311BB","D343B3E53B3F72FD",
|
|
|
+ "D15308E358887725","72613D0DE910B3A9","FE7631CE8703E7E6","B337576572E59479","84867FBCF619A8B1","596D8E70E99CAFF2","78E51FF5BDE3FD23","EB2D555F9C210D7D","C007EC8EB7401D1B","E0BE308CECF2ABD0","253B82B80BA867F7","52707F6A25253133","CB79D9E841152AF0","0EF05071E9C3FF72","9952EA6289BA38D4","23A57F56A8BB01CC","FC3EF21A1EE34369","F934706D8B1CEF93","8C83FF22EFD2E823","F9837249FE914492","A4249F905E0FAF6D","EA7B02838B284A58","257D476B0AC7717B","45A0D2D732C24E94","96EF12482DFCDD6E","1856D3A4C4E4B3B1","C4377707FE61780F","43F0047C23860CA3","C007EC8EB7401D1B","18E415ADAD32E6DB",
|
|
|
+ "4CB0BC638A940DF4","AB4432D5FDDD4552","6993EAE53DF45CB6","F621AAACC07491CF","035380F8D8768D8E","41A1A33E02F26395","BC7C42946BCDB31B","28D22A3DA85249BC","8B5D72C2EB6E67E6","76EACFC5D1AB431D","DEF168F7BD4BA72C","7CEB3FDC28C06E6F","00E9CAB43742BE9B","3CFEBEEBF3222C1E","D07E8311AD2C34D6","9FFB3507B32E1349","0C76D6873B84C605","F3BA574481362A2C","800680E086F1E10F","5F8BCA03191D558D" };
|
|
|
+ //@NoUseNewKeyEx return 1;//如果没有使用这个功能,直接返回1
|
|
|
+ //@NoSupNewKeyEx return 2;//如果该锁不支持这个功能,直接返回2
|
|
|
+
|
|
|
+
|
|
|
+ for (n = 0; n < 255; n++)
|
|
|
+ {
|
|
|
+ DevicePath = j9.FindPort(n);
|
|
|
+ if (j9.get_LastError() != 0) return (int)j9.get_LastError();
|
|
|
+ outString = j9.EncString_New(EncInString[myrnd], DevicePath);
|
|
|
+ j9.CloseUsbHandle(DevicePath);
|
|
|
+ if ((j9.get_LastError() == 0) && (outString.compareTo(EncOutString[myrnd]) == 0))
|
|
|
+ {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return -92;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|