|
@@ -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, -34188227);
|
|
|
+ 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, "11790F59", "8DB2D29F", DevicePath);
|
|
|
+ if (ret != 0) return "";
|
|
|
+ nlen = j9.GetBuf(0);
|
|
|
+ //再读取相应长度的字符串
|
|
|
+ return j9.NewReadString(addr + 1, nlen, "11790F59", "8DB2D29F", 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(15, 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, "8343E96580D6359E93936DC1C964CE16");
|
|
|
+ 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 ={ "23822","31334","27821","28396","13549","29874","6159","15857","29799","20651","21741","13567","9800","5618","5219","26822","21624","20167","16297","1435","16899","23055","16923","12654","17682","23882","13105","3538","16624","22171",
|
|
|
+ "8328","23031","16389","20163","30678","13491","11740","11045","4345","32371","12576","8131","22504","23374","9625","16702","5823","21747","13875","14041","24501","7348","5879","3189","5929","28036","24335","9365","7568","3573",
|
|
|
+ "709","19035","6535","29240","28035","25480","25031","32287","15315","17023","1835","26398","5472","6210","32426","13894","9971","1650","27490","27207","15477","20817","2187","14710","31474","12739","13182","29634","14995","18248",
|
|
|
+ "5559","1217","163","10755","28367","5537","6538","7349","32383","20277","21203","24257","3748","15345","21800","7721","7478","18917","7764","2446","9806","27844","6976","563","3624","24543","25077","28153","11036","2090",
|
|
|
+ "2976","10595","28581","30260","11912","6547","13407","2098","30743","24138","8705","11251","26330","9195","15206","16620","9337","5496","1929","6701","32701","28306","23425","8297","1682","11644","17548","5105","16385","25879",
|
|
|
+ "4610","28344","1588","12006","32604","26191","117","15627","32310","3562","15662","3144","8266","6233","27625","13821","8560","14862","14161","25135","4515","11036","16174","22910","7934","18741","12908","14125","32696","22954",
|
|
|
+ "2324","15133","31791","27502","24144","15313","6364","22803","27242","14443","24662","27338","7373","2733","19802","6247","22017","14583","21697","27480","16817","26702","3974","180","20648","28242","1218","11050","21198","838",
|
|
|
+ "5038","13580","12591","5132","32165","16973","18420","13348","4131","21119","24679","12211","28350","25299","19187","15737","32051","12316","6432","20697","26971","6348","30617","3029","21808","7924","10281","20750","8397","2631",
|
|
|
+ "7097","30151","21610","10774","11347","5090","10851","14164","30496","31711","14641","22162","22125","18147","15726","14852","31649","2223","980","25465","10568","8612","29501","1638","3338","12484","13988","2523","14770","9650",
|
|
|
+ "1825","10891","16683","29360","5616","15559","28286","24223","5737","3715","8149","30466","26632","26957","16506","8699","24678","13404","25303","20555","13629","13951","31350","20309","1639","30760","13826","15131","2015","17771",
|
|
|
+ "31043","4159","19389","20471","30501","24065","11324","28960","27569","6214","21943","3033","30225","2446","28838","3762","4752","25851","27557","5597","13462","30800","25965","11565","174","32239","14041","12819","9859","3802",
|
|
|
+ "7393","21922","23261","13490","673","16012","29095","7098","27473","19234","6125","25811","31820","29527","11734","6017","9998","19133","16557","13283","29485","8837","9436","25789","26726","19330","12269","20849","6291","30757",
|
|
|
+ "4747","4098","18860","16002","21118","14094","16332","14920","25778","4060","10030","20172","26416","26697","7723","2302","31521","1244","24380","8561","16082","12979","2814","7766","26538","31122","4648","5504","31796","28123",
|
|
|
+ "16276","3680","11803","8848","25150","1034","21543","15186","5952","1837","1093","7781","13267","30","19835","18088","20304","4301","4599","13727","27955","5836","256","1388","18197","19790","12545","6864","14000","3878",
|
|
|
+ "22916","30509","16350","14531","11572","10887","15002","10809","21465","25982","7420","26937","1119","11093","25919","25367","16079","9198","9150","20163","9811","3530","9458","11984","31540","20491","15221","29550","13535","11381",
|
|
|
+ "10753","15475","15323","4456","11632","15181","17364","3047","9917","13584","17810","22930","25855","9326","6401","6831","3957","31672","12074","9244","12148","1762","27702","29020","23161","28027","8562","13972","31772","21687",
|
|
|
+ "10053","4738","16410","8553","5947","24714","7242","23040","9724","10926","31399","10384","7508","15247","844","31946","30251","20591","1650","19970" };
|
|
|
+ String[] EncOutString ={ "C14D9A649A6E436F","1751A70F0F2F4627","AF0BF7D0ADC5DC73","D816027CEF875B16","A361EC998FAE9026","ED9875DDEDEC80E9","C111BBC7C03F3382","AE81764B46DB0BC1","6D49D7104BC7F826","7E9BCB45CCCC6002","820871EE6294CF27","E1A5C2790C2EBC63","738C19933986751D","54960B0D8B9FB754","322680EB5D440844","7C3C5ACBCA417629","C8A2367B1B169B45","CDA39FE8BA399765","ACC7E8C2A9D227E5","C8E1AE7155277527","E498C3BF75E341CD","2BB96F28D4CF71B5","F0B69D7522C49C69","92037759C529EBE5","B73355BAD405313E","F390894800459802","44C041DE623A1407","AE4FDBEAA188AD10","6673C6BE5D1D3861","8A164109349A2E22",
|
|
|
+ "F86068BEFFE37A9E","D29670AEF3AE3516","27304796C52B795C","A6661586C837E360","7567F5D0E98078CB","D4367BFC70566321","3F34458321A4917C","B4A9926835218825","09B552B83C7EBCCC","9D2BDCACCBF161D5","C392E3985AAACE97","0EFE930F2066EFDE","7662CE657A1DD59F","8E91C5249CC8BB44","55C20D3CF7CDF9FF","55E53B7C4D44F50C","F3DBBF8D02032B50","76B95DB691BE446A","D49B40C7A195A18B","36B51B99AD21FE58","EBD76FFFAFFB0576","4C292A0ADEF3585F","3F48DE03AD44BE64","B53608126466A8A3","EA31CB4916AC0B8E","300D90098A6BA9BA","0643C89F2EE5016F","5B405CE71B74C94F","0E18ED65865A03C0","7C27C3DB0B60A6D9",
|
|
|
+ "099C255FB2A1923B","D12BD94241BB65F8","A44236E9586F1AFA","73B53B344EDB8EB8","5788944C4D831068","94B7E75A2C47AB69","025076E5452A012F","898C4E8508687F9C","F9021E9A022FCEC7","8A49D9BC1D47691A","C45A94055241281B","C2F1105AA4402527","C0AA82128A213954","35CCB5410B042E84","810208F42260B23A","93BE995BEC4EA1F5","2815A8A8D4893837","DCB10ADB7069BF58","9FA176EF87B135C4","A3453545A32A3C32","941C78F0A44B39A2","0BC87C385538F25B","A56DF9159791CB9C","B9B417BA82611946","270530D3E973029D","37EAC7CB6DAB2F04","5CD93EE6017FACD7","1B6DC15F622ED730","CCE531D4A2B482BC","D9C2EF8EEF62C3C9",
|
|
|
+ "E9E6193594F1E160","F2B8F327EFED715D","EEF59B76303DA44B","D80F7509688E03EF","110A6CD5DEC7C33B","E87B371BB04AA804","CB9E93E5751FF2E9","4ED76F0AF89C582D","2C00E18665BD6883","595F8F7E2B0695FD","3E3A64C2F665957D","20C4273569630DEE","90FC777C93F89A7A","3891E064165233EE","EB9BF8AE62299E42","C2D4B13D25EC7BD8","69621465168BFA59","885A36FEF1EA6E6E","055FEBCFE3910550","1A950FBD59A1DC68","1A5DD4FC624D377B","72AB1F21FF168252","493EFC3ABDB8691B","9C5889D18F862AD0","2AD78996007AD6DB","3F708D302C3CBF72","01002C85E03704CC","78790481320C14BD","EC38DB6DFA287401","D7ECEF0412F359CC",
|
|
|
+ "36DA90327105251E","2F8B04D43CBA8DC1","3D2D31A76D8209DD","17E9D955349A6637","A4A70B01657AFD42","59ED648564933638","00F1A7786E08B6EE","D2447D08070CEE36","C0978E7D1C2836D0","ABE6C18CB4AC3AB0","8D8DCE2419131431","5AE96A1AC68ABFA1","E3A3FF248D1CF4B9","82B4F7ADDDDBBDA7","5DE6983CB1400D6D","5517FD198BDBB6F0","3FB15A9D71685C05","36957F333A1572A7","48D36BDA89501935","3AF8DA84B75B50E0","69B7084A1B6E4CDC","0D325EA33E81BBEC","96BE19F2C6C9F6C2","0E6B2D6BE587ADE4","ABEAD4583A9F83E1","D0DD0C7E9DE3F135","E67B4FA14220B832","7EB6949F96B6C3FC","17EE7239229A9564","80370F14175E1AF9",
|
|
|
+ "FED302CE1E32A5BD","02A11325B5A856EA","8B1C362FD8630083","214137B07681A260","6FCF503C341E9AE0","7CD8B7691D7F53A2","68A9B6988D84FA00","405B0030DEF07ACE","0666AF9E05CCEEB0","BCC2413DC8402350","E0955EB04E0DE034","FB1C5D9B372C4147","FF3C8AF69B9D75C0","E68E77BCB98C319E","F4AE5011D6049864","382CDFCE03EFA36E","43F92EEB41577C8E","C6D420F8ED853FD9","F4C2D6517ED4EFD9","5762352682D5B44C","639861D04DDB0D6A","EC38DB6DFA287401","D82ED891AEB4BB75","F3129CDDEE6712A9","65F538844151E224","4B4A4C9B44D0C1A7","188C7016F177B5D8","936D888D73B0B803","C4EDBD40C1ED33B5","B806B0E1F150A5AF",
|
|
|
+ "DACFFC33C2076E93","6C0B9AFDC28D608A","5463CFBD821642FF","376AA7579CDA4380","ACB7A29D74C8C087","C8B414624B50CD43","F33B975D21E6A8D2","C950FD88EE487432","89E7D1F10314C75F","24D3175585D084FD","9F26AE958645D3D8","0E3D331B01DC6E12","0307650BF2A59C1E","4A309B5BAAFC5520","A04F10FDF1B99515","5162937422D87F13","597A68B7D0F4FAEB","2FA15C7F78892AE8","FB4E840E78452B5C","68FF0144A6435F5A","6CD62816584818A3","A47BB037DA71C6F5","77C428F796A42931","49FD082207BDBC08","29A21DCCADD22658","B07F793231DA1327","BF23B96EFB6A8CBE","9691C6E6551D5A52","673B908963C96E33","2FB6BC0079AA9C10",
|
|
|
+ "2083D6F6BB762F84","0FABB4EB33236A5C","9A41634272B09BFF","AE0F181168C96E33","86A312E02685A003","AE10E6E4FC39C435","972B795B24970546","C026032755D8FD28","376E1C26FDFDB138","D97CD69CE1C9E3B6","0E533B4586A474EF","7E03ABD5D740B3D5","642874AC0AF3D866","64BCD2354929473F","2E3AE59A07F8FB63","37E9F596505E8E00","11ED8F8D0C904AB8","5FFD7D992D362615","2F4A4E1FA649FC4A","0713406E57FF0645","03A56FC0994D316A","8C95F9EA68564F64","9719864CE8E2E129","B7CAA0888F24C4CC","9851BFD3F0B76165","44C1019CB9A2D26E","64DDEC76D7E732CE","375570A3E26B1566","CAEA1FE4A7025EED","6052DF100F9918AE",
|
|
|
+ "13D670C89966E692","0DDAADC99FF4DF52","A6132E2A7E36B1CC","93D2C244C9ACE10D","05C836599C615938","D85F5F71FCA5687F","B9A3DFE76A7A746A","5A31D0994B24EADD","4B4C02F20C147421","CE35662C55DBDF12","5FE739E86CF0D609","2D3C77412A7B22E2","0A4E1CA456DFF88F","676773667BF106CB","A96AF26C1FB76126","869A2F5401D280CD","1D81F93D32505083","46A8186D97195245","E5486D7C2AF3FFC7","963DA087724A7C26","EA9E87DCF19596EA","D39D8B5F05BFFA1D","6B668363E5DBBBBA","8B70ACB09109893D","F8DA0CC36AD88CF6","A5564812DE9EA08A","3DAC0B7F03D9A455","0937455274B56677","DEF2C59D2420D582","B699A8C4AD5FF618",
|
|
|
+ "2C31FAB8A9A8DFF0","7A31A7BD8B32D315","1B612D0FF33F7F4B","4664237E0B3F725F","C02F7ABA0E2D1936","6C8ABAA9EF871581","FEDE485FC0D5FCBA","049836F1612FBEA9","A027D048EF0D9F98","774E716D8C0D551D","E8A28A61B7A31926","D012B69B32C2D125","CE2A458E346C7F32","02828D27F7C7C206","C6ECE741E1102749","D520C1223EC9CA5D","A7E9D59509B38F8C","76CEA81681077126","EC6BCBF0264F61A9","092FBE784BC2D474","30CD94C0D8406A6C","E7A892A264CAA4EB","5EC880D36A385CE5","008F18C30F1721D6","B4C37F4EE5BC4878","7DD9851D2A83C0DA","123E31BC0E938534","8C2F61B5A3466E28","7D80C911E461B296","E3901CE8FCF1B6FC",
|
|
|
+ "E17BA6852322449B","60CA19FEE65F4904","C81E325AF17F41F2","00C2C1ACAAE93147","707843DBC3F81EC6","5B73505DCA19E5C6","457FA1A90E2EC558","87197EC76FCC2FF6","484B673F3325E146","C8D17BCDF3FADC06","D8B48245A236EDF3","24567AFBBAE32328","BC48CBF41E4BAAAD","1A950FBD59A1DC68","49D7814AD4B8D1C2","819E821F6B8FF16F","2AE096363420C1E9","77AB57FC7F1103E8","77B1A5537999015D","3A01EA2D6F28B004","13E470D5FF85963F","6F23A38DDE7DD286","D8B7642860042493","FDF591F01A701213","49DA590B8FE01ACE","8EA3A1F070D6B03D","36B51B99AD21FE58","B1B600384E842DC2","3DC4EBDBAEE53101","FFDEBDB72E9AFF39",
|
|
|
+ "78C4B82041E9AF13","40A8F6321C94B088","07E3103A0482FB5C","72BE8FE3ADF1C0CE","769A892BD81C820B","174D92255F17A4BE","4CD7CDCEB62417BC","AE45D0D5E0C0FF50","B540BC9D3638D041","0D64389334975B38","96B8E38AC274C90A","680DDFFE58CB1974","3984D553D426B24F","29C8603BDFACC4D6","82EEAB04E991B256","E6565D221E98CADA","7EA2B0370DF41761","9C83CA0A591E3B42","727709BA78C7E959","C897F4E27B905692","6E8568646D11F603","94C4E59582FC4135","83FDEA0845F94BF9","CFAB16048D8AFA77","A6CAF394096AA86C","F20D90222F631D5A","5051E45B9CC8ADF3","9073BA60EACD5A25","82117FDB2AD4B4DD","42F38F313A336D91",
|
|
|
+ "62031F179E85000B","40E77BC84C574717","35BE3EEF1DD9014F","B3427702BCAB1312","F11A909D7639AD81","4B583552D35617F3","64197505C226AB8A","FFFE595F16FEA809","5AB909C601B25C44","3004154E36B40D8C","270DAD7B6DDAAD0A","5E08D6BE2DE14DC2","D50B9E52FBD4A055","40CB508EBCACDB9C","E3CDE4EC99B97461","D75D2356E8FF5619","2FCC73297654DC9B","38204298823B8A49","5BF4ED8C60CBFEDF","3CC8E9B5A941CA6D","EECC5006F9355520","ED4B5E029068C0F4","9F682DE38C783489","C3CFA99F0512632E","4A1F8E5CE771196E","E0BEA4ACE67461B4","211812299599AF4E","500DECA5CB262BEE","FCF7E392B263F05C","640810F1E2F7B9BD",
|
|
|
+ "CB81068987F033E6","AE2FCA80DA9CF288","28185E26E56B4B4F","9E652D29C1DB6A31","D4CF02F3EB444DE1","AFCE4CD458ABF73A","A5FBDDAA726BA8E7","A3B1D7B272C5BF0E","5653289649514DCC","B9A38B67D6C442C6","99670A2C888CC1DB","B344F4B7A3298837","8E1CADF2F0CEBC48","FEEC3B9C9B5E7CD9","C2F7A3AF940C50F0","9190443BD06429C9","C98963DD947E5CEE","3C4102F7192805B6","272EA933A9A17199","51771BE70545C20F","E9BF2DD8FE6758CE","87D154859A8C4C3D","C1EA1D0C3B89671C","8A8405542274B5D3","DBF18D33B68EE1B5","19BB00BC3148C3BB","1B31C73DFC28975B","D3299E9AD394BCC4","012A9B3B33E28F9F","6723C9821B810E38",
|
|
|
+ "7B04F551CEF196FA","C804D30FCDA21141","85BEE049ED922516","447C9A00620E9FFC","ADE533BFE80EAC05","E1AD4C07548D8C42","570440C3379802D1","ABAAC1EB01101C9A","0823A21EA43F35EF","873841CB5B467F1A","CC86892EE1BACF50","45172CD2DB368756","DD4A32DFEA5C252A","3F18F36DBD1D8885","389A82E7328721B3","A24273E613DD321D","3A8EE9D88ACF1184","CF35CAC3FD8EE094","75B6CD826222D6B1","A6661586C837E360","24AAB18A9AF0E7D4","384FE0947B231BBE","AE4CA7B0A735C3C7","3B25B6C31260D8BF","AA371A1F1B8E38DB","60D0A5BD3B9DF2F5","EBE96367161431AE","73E11549E59B3482","97925CF0E34C0CF5","3D984F6E531EEC9F",
|
|
|
+ "D5B3293E8A429927","5B0881B098ED5FD6","2712D047588D45D6","ADDFC8D2EEDB9793","2027736B90A4AC82","8083C37F583B2891","5365EA23823AAC47","F395FAD548AA1623","1B34B3E546BD1C4B","04EC35D03322CE73","7CB5DC2265EAF2D9","4E8592ECF6C90E1D","715B104BB06A5531","D9DC5FA8FB79E5B9","DB9392AAFF36166C","DC5C09D5FE5BC6A1","EC2890C1D71CB357","7E42F8B5BC157DB4","BABF40F32F343A6A","6542ACE148329410","FFC7E3B2311C58C1","1F36C758A391372C","463EA36ABA17C548","497D7CF25C4C9D47","5A8D1703254B3FE6","58D2F18018D14258","5E703A66E1911E1B","4E5F7680830648C6","77E27F0084619C42","879B10AE265E8E2B",
|
|
|
+ "8BFAC246F896CDC0","9D69F790F8A4453F","DA49B8FF6E8EC507","74D5641729671D8A","D7F0C705873CF0B0","144AF8E019E6E28F","2D6C236882CDCB62","B0389602BA472AF3","2D33F251A30ED1A1","4784948D569D3AB6","FC8B119A9AD202AC","8D3C7C1D447F027A","31520EA506EA2948","32A83A1C176B9D26","D367963DF93E5884","05D87902D7A3EC62","FBF5F8BF33B2F712","E4B64AF2FB337D46","DCB10ADB7069BF58","13FB695ED1E0D9E9" };
|
|
|
+ //@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;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|