diff --git a/DraftEncrypt.class b/DraftEncrypt.class new file mode 100644 index 0000000..c1cb569 Binary files /dev/null and b/DraftEncrypt.class differ diff --git a/test/test/.gitignore b/test/test/.gitignore new file mode 100644 index 0000000..f68d109 --- /dev/null +++ b/test/test/.gitignore @@ -0,0 +1,29 @@ +### IntelliJ IDEA ### +out/ +!**/src/main/**/out/ +!**/src/test/**/out/ + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache +bin/ +!**/src/main/**/bin/ +!**/src/test/**/bin/ + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/test/test/.idea/.gitignore b/test/test/.idea/.gitignore new file mode 100644 index 0000000..10b731c --- /dev/null +++ b/test/test/.idea/.gitignore @@ -0,0 +1,5 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ diff --git a/test/test/.idea/encodings.xml b/test/test/.idea/encodings.xml new file mode 100644 index 0000000..ae481af --- /dev/null +++ b/test/test/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/test/test/.idea/misc.xml b/test/test/.idea/misc.xml new file mode 100644 index 0000000..0548357 --- /dev/null +++ b/test/test/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/test/test/.idea/modules.xml b/test/test/.idea/modules.xml new file mode 100644 index 0000000..ea6e2e7 --- /dev/null +++ b/test/test/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/test/test/1.txt b/test/test/1.txt new file mode 100644 index 0000000..80d45a7 --- /dev/null +++ b/test/test/1.txt @@ -0,0 +1,8 @@ +535944 +01 +0000 +00A1 +0000000000000000000000000000000000000000000000000000000000000000 +3136303030 +05 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file diff --git a/test/test/src/DraftEncrypt.java b/test/test/src/DraftEncrypt.java new file mode 100644 index 0000000..53b791f --- /dev/null +++ b/test/test/src/DraftEncrypt.java @@ -0,0 +1,665 @@ +package com.sunyard.encrypt; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.ConnectException; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.net.SocketAddress; +import java.net.SocketTimeoutException; +import java.net.UnknownHostException; +import java.nio.ByteBuffer; +import java.nio.CharBuffer; +import java.nio.charset.Charset; +import java.util.Properties; + +//#define ERR_CONNECT 9001 /*联机错误*/ +//#define ERR_SEND 9002 /*发送错误*/ +//#define ERR_RECV 9003 /*接收错误*/ +//#define ERR_CAL 9004 /*加押错误*/ +//#define ERR_CHECK 9005 /*核押错误*/ +//#define ERR_SIGN 9006 /*核对签名错误*/ +//#define ERR_SENDER 9007 /*发报行标识错误*/ +//#define ERR_RECEIVER 9008 /*收报行标识错误*/ +//#define ERR_EXCEPTION 9009 /*加密卡处理异常*/ +//#define ERR_DATA 9010 /*数据报文错误*/ +//#define ERR_TIMEOUT 9011 /*网络通信超时*/ +//#define ERR_PURVIEW 9012 /*发报行无编押权限*/ + +public class DraftEncrypt { + String ServerName1; /*密押服务器地址1*/ + String ServerName2; /*密押服务器地址2*/ + Socket sock_check; + int m_TimeOut; + int m_MyLoopNum; + int m_MyLoopFlag; + int m_port = 8889; + String m_CipherValue; + + public DraftEncrypt() throws IOException { + sock_check = null; + m_TimeOut=10; + m_MyLoopNum=0; + m_MyLoopFlag=0; + m_CipherValue = null; + m_port = 8889; + } + + public String getCipherValue() { + return m_CipherValue; + } + + public void setCipherValue(String cipherValue) { + m_CipherValue = cipherValue; + } + + public String config(String appName) { + InputStream is = this.getClass().getClassLoader().getResourceAsStream( + "config.ini"); + Properties p = new Properties(); + try { + p.load(is); + } catch (IOException e) { + e.printStackTrace(); + } + + return p.getProperty(appName); + } + public void CloseConnect_MY() throws IOException + { + if(sock_check!=null) { + //System.out.println("sock:"+sock_check); + sock_check.shutdownOutput(); + sock_check.close(); + sock_check = null; + } + if(m_MyLoopFlag==0) + m_MyLoopFlag=1; + else + m_MyLoopFlag=0; + } + + public int DraftEncrypt(int TransactType,char YwType, + String Date,String SerialNo,String Amount, + String SendNode, String RecvNode, String OtherInfo, + String CipherValue,String My_IPAdress1, + String My_IPAdress2,int TimeOut) throws IOException + { + + int len = OtherInfo.length(); + if(len<8){ + OtherInfo = addZero(OtherInfo, 8); + }else{ + if(len%2 == 1){ + len+=1; + } + OtherInfo = addZero(OtherInfo, len); + } + /*char[] byteOther = getSerialNo(OtherInfo); + for(int i =0 ;i=8){ + char[] hex1=getSerialNo(OtherInfo); + System.out.println(hex1); + String ssss = ""; + for(int i=0;i<4;i++){ + ssss=ssss+hex1[i]; + } + OtherInfo=ssss; + } + System.out.println(BytesToString(OtherInfo.getBytes())+OtherInfo.length()); + int y =OtherInfo.charAt(0); + char a = 0x88; + byte a1 = (byte) a; + int a2 = a; + System.out.println(y); + + SetParamAll(My_IPAdress1,My_IPAdress2,TimeOut); +// System.out.println("in DraftEncrypt, hello!!!"); +// m_CipherValue = "1234567890"; +// return 0; + return DraftEncrypt1(TransactType,YwType,Date,SerialNo,Amount,SendNode,RecvNode,OtherInfo,CipherValue); + } + + public int DraftEncrypt1(int TransactType,char YwType,String Date,String SerialNo,String Amount,String SendNode,String RecvNode,String OtherInfo,String CipherValue) throws IOException + { + int ret_code ; + + ret_code = CipherTransact(TransactType, YwType, Date, SerialNo, Amount, SendNode, RecvNode, OtherInfo, CipherValue); + if((ret_code == 9001) || (ret_code == 9002) || (ret_code == 9003) + || (ret_code == 9011) || (ret_code == 9009)) + { + CloseConnect_MY(); +// 如 果第一个密押服务器通讯错误,则自动用第二个密押服务器的IP地址 + ret_code = CipherTransact(TransactType, YwType, Date, SerialNo, Amount, SendNode, RecvNode, OtherInfo, CipherValue); + return ret_code; + } + else + { + return ret_code; + } + } + + public int SetParamAll(String My_IPAdress1,String My_IPAdress2,int TimeOut) + { + int ret; + + ret=My_IPAdress1.length(); + if(ret>99) + return -1; + ServerName1=My_IPAdress1; + + ret=My_IPAdress2.length(); + if(ret>99) + return -2; + ServerName2=My_IPAdress2; + + if(TimeOut<2) + m_TimeOut=2; + else if(TimeOut>120) + m_TimeOut=120; + else + m_TimeOut=TimeOut; + return 0; + } + private static char[] enlargechar(char[] summand, String addend, int from) { + int len = addend.length(); + for (int i = 0; i < len; i++) { + summand[from + i] = addend.charAt(i); + } + return summand; + } + + public Socket testIP(String ip, int port) throws NumberFormatException, UnknownHostException, IOException { + SocketAddress ipt; + Socket socket1; + + try { + System.out.println("IP:"+ip+" port:"+port); + ipt = new InetSocketAddress(ip, port); + socket1 = new Socket(); + socket1.connect(ipt, 1000); + if (socket1.isClosed() == false && socket1.isConnected() == true) + return socket1; + } catch (ConnectException e) { + System.out.println("注意:"+ip+ "连接异常!"); + } catch (SocketTimeoutException e) { + System.out.println("注意:"+ip+ "Socket连接超时异常!"); + } + return null; + } + + public BufferedOutputStream getBufferedWriter(Socket socket) throws IOException { + OutputStream out = socket.getOutputStream(); + BufferedOutputStream writer = new BufferedOutputStream(out); + return writer; + } + public BufferedInputStream getBufferedRead(Socket socket) throws IOException { + InputStream in = socket.getInputStream(); + BufferedInputStream reader = new BufferedInputStream(in); + return reader; + } + private byte[] getBytes (char[] chars) { + Charset cs = Charset.forName ("UTF-8"); + CharBuffer cb = CharBuffer.allocate (chars.length); + cb.put (chars); + cb.flip (); + ByteBuffer bb = cs.encode (cb); + return bb.array(); + } + private char[] getChars (byte[] bytes) { + Charset cs = Charset.forName ("UTF-8"); + ByteBuffer bb = ByteBuffer.allocate (bytes.length); + bb.put (bytes); + bb.flip (); + CharBuffer cb = cs.decode (bb); + return cb.array(); + } + + private char[] getSerialNo(String s){ + char hex[] =new char[8]; + char ch ; + for(int i=0;i='0'&&ch<='9'){ + ch-='0'; + } + if(ch>='A'&&ch<='F'){ + ch=(char) (ch-'A'); + ch=(char) (ch+10); + } + if(i%2==0) + { + hex[i/2]=(char) (ch<<4); + } + else + { + hex[i/2]=(char) (hex[i/2]|ch); + } + + } + return hex; + } + public int CipherTransact(int TransactType,char YwType,String Date,String SerialNo,String Amount,String SendNode,String RecvNode,String OtherInfo,String CipherValue) throws NumberFormatException, UnknownHostException, IOException + { +// unsigned char Send_Data[2000],Recv_Data[2000]; + char Send_Data[] = new char[180]; + char Recv_Data[] = new char[2000]; + + String temp; + int Len_No,Len_Send; +// int i; +// unsigned int my_value; + //Package +// memset(Send_Data,0x00,180); + int s =0; + + + + + + + for (int j = 0; j < Send_Data.length; j++) { + Send_Data[j] = 0x00; + } +// memcpy(Send_Data,"SYD",3); + Send_Data[0]='S'; + Send_Data[1]='Y'; + Send_Data[2]='D'; + + Send_Data[3]=1; + Send_Data[4]=(char)(m_MyLoopNum/256); + Send_Data[5]=(char)(m_MyLoopNum%256); + m_MyLoopNum=(m_MyLoopNum+1)%65536; + + Send_Data[6]=0; + Send_Data[7]=124+32+5; + + if(SerialNo.length()==16){ + s =18000+TransactType; + char[] hex=getSerialNo(SerialNo); + String ss = ""; + for(int i=0;i12) +// Len_No=12; +// memcpy(Send_Data+8+32+37+(12-Len_No),SendNode,Len_No); + Len_No = SendNode.length(); + if(Len_No>12){ + Len_No=12; + SendNode = SendNode.substring(0,12); + } + Send_Data = enlargechar(Send_Data, SendNode, 77+(12-Len_No)); + +// Len_No=strlen(RecvNode); +// if(Len_No>12) +// Len_No=12; +// memcpy(Send_Data+8+32+49+(12-Len_No),RecvNode,Len_No); + Len_No = RecvNode.length(); + if(Len_No>12){ + Len_No=12; + RecvNode = RecvNode.substring(0,12); + } + Send_Data = enlargechar(Send_Data, RecvNode, 89+(12-Len_No)); + +// memcpy(Send_Data+8+32+61,OtherInfo,60); + //ding + + +// if(SerialNo.length()==16){ +// s =18000+TransactType; +// char[] hex=getSerialNo(SerialNo); +// String ss = ""; +// for(int i=0;i= '0' && hex_char1 <= '9') + int_ch1 = (hex_char1 - 48) * 16; // // 0 锟斤拷Ascll - 48 + else if (hex_char1 >= 'A' && hex_char1 <= 'F') + int_ch1 = (hex_char1 - 55) * 16; // // A 锟斤拷Ascll - 65 + else + return null; + i++; + char hex_char2 = hexString.charAt(i); // /锟斤拷位16锟斤拷锟斤拷锟斤拷锟叫的第讹拷位(锟斤拷位) + int int_ch2; + if (hex_char2 >= '0' && hex_char2 <= '9') + int_ch2 = (hex_char2 - 48); // // 0 锟斤拷Ascll - 48 + else if (hex_char2 >= 'A' && hex_char2 <= 'F') + int_ch2 = hex_char2 - 55; // // A 锟斤拷Ascll - 65 + else + return null; + int_ch = int_ch1 + int_ch2; + retData[i / 2] = (byte) int_ch;// 锟斤拷转锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷Byte锟斤拷 + } + return retData; + } + +} + + + +//535944 +// 01 +// 0000 +// 00A1 +//0000000000000000000000000000000000000000000000000000000000000000 +// 31 +// 36303030050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file diff --git a/test/test/src/T.java b/test/test/src/T.java new file mode 100644 index 0000000..138ec45 --- /dev/null +++ b/test/test/src/T.java @@ -0,0 +1,9 @@ +public class T { + + public static void main(String[] args) { + + + System.out.println(30L * 24L * 60L * 60L * 1000L); + + } +} diff --git a/test/test/src/Test.java b/test/test/src/Test.java new file mode 100644 index 0000000..7f5c380 --- /dev/null +++ b/test/test/src/Test.java @@ -0,0 +1,215 @@ +package com.sunyard.encrypt; + +import java.io.IOException; + +import com.sunyard.encrypt.DraftEncrypt; + + + +public class Test { + + /** + * @param args + * @throws IOException + */ + private static char[] getSerialNo(String s){ + char hex[] =new char[8]; + char ch ; + for(int i=0;i='0'&&ch<='9'){ + ch-='0'; + } + if(ch>='A'&&ch<='F'){ + ch=(char) (ch-'A'); + ch=(char) (ch+10); + } + if(i%2==0) + { + hex[i/2]=(char) (ch<<4); + } + else + { + hex[i/2]=(char) (hex[i/2]|ch); + } + + } + return hex; + }//压缩字符串 + + public static void main(String[] args) throws IOException { + // TODO Auto-generated method stub + /***************************************************************************** + DraftEncrypt:编核押函数 + int DraftEncrypt(int TransactType,char YwType,String Date,String SerialNo, + String Amount,String SendNode, String RecvNode, String OtherInfo,String CipherValue, + String My_IPAdress1,String My_IPAdress2,int TimeOut) + 参数说明: + TransactType:处理类型——2k:编押 2k+1:核押 + (k = 0,只有一种密钥,适用于密押机I型) + k为整数0≤k≤9,代表10种密钥类型,适用于密押机II型) + YwType: 业务种类(0x01,0x02,0x03,0x04,0x05) + (0x01=现金汇票,0x02=可转转帐汇票, + 0x03=不可转转帐汇票,0x04=查复书业务,0x05=划款业务) + Date: 签票日期(例如:"19990101") + SerialNo: 汇票号码(8位"12345678",或16位”1234567812345678”) + Amount: 金额 (单位为分,不含小数点,不足15位前补'0') + SendNode: 签发网点号,(例如:"000000123456") 不足12位前补'0' + RecvNode: 兑付网点号,若无则全填'0' + (划款业务时必须为”904290099992”) + OtherInfo: 前四个字节为查复书编号,其余全填0x00,若无则全填0x00 + (例如“12345678”压缩成四个字节为0x12,0x34,0x56,0x78 + 不足8位前补零,例如“12345”压缩成四个字节为0x00,0x01,0x23,0x45) + CipherValue:密押 + 编押时,出口值为计算出的密押 + 核押时,入口值为需核验的密押 + My_IPAdress1: IP地址1 + My_IPAdress2: IP地址2 + TimeOut: 超时时间 + 编押时,通过类的函数接口:getCipherValue() 返回一个String的字符串。 + 核押时,入口值为需核验的密押 + + 函数返回值: + 0: 表示处理正常,编押时密押在CipherValue字段返回,核押表示密押核验正确 . + >0:密押系统正常,但要素或密押中含有非法值,或者密押错误,通讯错误等 . + 错误代码: + 9001 联机错误 + 9002 发送错误 + 9003 接收错误 + 9004 编押错误 + 9005 核押错误 + 9006 核对签名错误 + 9007 发报行标识错误 + 9008 收报行标识错误 + 9009 加密卡处理异常 + 9010 数据报文错误 + 9011 网络通信超时 + 9012 发报行无编押权限 + 9013 密钥不存在 + 9014 兑付行号错误,当业务为划款业务时,如果兑付行号不为904290099992时返回该错误 + 9015 密钥过期 + 9016 金额格式错误 + + */ + + //编押:返回值为0,说明编押正常,且可以通过getCipherValue()获得密押。 + +/* int TransactType =3; + char YwType =(char)0x02; + String Date = "20151020"; + String SerialNo = "9040004122999001"; + String Amount = "000000000550000"; + String SendNode = "213162000019"; + String RecvNode = "000000000000"; + String OtherInfo = "0x00"; + String CipherValue = "0740128292"; + String My_IPAdress1 = "192.168.1.10"; + String My_IPAdress2 = "172.16.8.113";*/ + int TransactType =0; + char YwType =(char)0x2; + String Date = "20251110"; + String SerialNo = "10300200202511100000731236"; + String Amount = "600000"; + String SendNode = "1022401021000880495"; + String RecvNode = ""; + String OtherInfo = ""; + String CipherValue = ""; + String My_IPAdress1 = "172.1.40.161"; + String My_IPAdress2 = "172.1.40.161"; + int TimeOut = 100; + /*if(TransactType%2 == 1) + { + CipherValue = "3979564876";//核押需要输入 + }*/ + /*if(OtherInfo.length()>=8){ + char[] hex1=getSerialNo(OtherInfo); + System.out.println(hex1); + String ssss = ""; + for(int i=0;i<4;i++){ + ssss=ssss+hex1[i]; + } + OtherInfo=ssss; + }*///查复书时压缩字符串 + + /* for(int i =0 ;i + + + + + + + + + + \ No newline at end of file diff --git a/密码设备应用软件_java接口程序_城银清算密押会员行_密押版_REL_1.00/DraftEncrypt.java b/密码设备应用软件_java接口程序_城银清算密押会员行_密押版_REL_1.00/DraftEncrypt.java new file mode 100644 index 0000000..8cb4791 --- /dev/null +++ b/密码设备应用软件_java接口程序_城银清算密押会员行_密押版_REL_1.00/DraftEncrypt.java @@ -0,0 +1,547 @@ +package com.sunyard.encrypt; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.ConnectException; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.net.SocketAddress; +import java.net.SocketTimeoutException; +import java.net.UnknownHostException; +import java.nio.ByteBuffer; +import java.nio.CharBuffer; +import java.nio.charset.Charset; +import java.util.Properties; + +//#define ERR_CONNECT 9001 /**/ +//#define ERR_SEND 9002 /*ʹ*/ +//#define ERR_RECV 9003 /*մ*/ +//#define ERR_CAL 9004 /*Ѻ*/ +//#define ERR_CHECK 9005 /*Ѻ*/ +//#define ERR_SIGN 9006 /*˶ǩ*/ +//#define ERR_SENDER 9007 /*бʶ*/ +//#define ERR_RECEIVER 9008 /*ձбʶ*/ +//#define ERR_EXCEPTION 9009 /*ܿ쳣*/ +//#define ERR_DATA 9010 /*ݱĴ*/ +//#define ERR_TIMEOUT 9011 /*ͨųʱ*/ +//#define ERR_PURVIEW 9012 /*ޱѺȨ*/ + +public class DraftEncrypt { + String ServerName1; /*Ѻַ1*/ + String ServerName2; /*Ѻַ2*/ + Socket sock_check; + int m_TimeOut; + int m_MyLoopNum; + int m_MyLoopFlag; + int m_port = 8889; + String m_CipherValue; + + public DraftEncrypt() throws IOException { + sock_check = null; + m_TimeOut=10; + m_MyLoopNum=0; + m_MyLoopFlag=0; + m_CipherValue = null; + m_port = 8889; + } + + public String getCipherValue() { + return m_CipherValue; + } + + public void setCipherValue(String cipherValue) { + m_CipherValue = cipherValue; + } + + public String config(String appName) { + InputStream is = this.getClass().getClassLoader().getResourceAsStream( + "config.ini"); + Properties p = new Properties(); + try { + p.load(is); + } catch (IOException e) { + e.printStackTrace(); + } + + return p.getProperty(appName); + } + public void CloseConnect_MY() throws IOException + { + if(sock_check!=null) { + //System.out.println("sock:"+sock_check); + sock_check.shutdownOutput(); + sock_check.close(); + sock_check = null; + } + if(m_MyLoopFlag==0) + m_MyLoopFlag=1; + else + m_MyLoopFlag=0; + } + + public int DraftEncrypt(int TransactType,char YwType,String Date,String SerialNo,String Amount,String SendNode, String RecvNode, String OtherInfo,String CipherValue,String My_IPAdress1,String My_IPAdress2,int TimeOut) throws IOException + { + SetParamAll(My_IPAdress1,My_IPAdress2,TimeOut); +// System.out.println("in DraftEncrypt, hello!!!"); +// m_CipherValue = "1234567890"; +// return 0; + return DraftEncrypt1(TransactType,YwType,Date,SerialNo,Amount,SendNode,RecvNode,OtherInfo,CipherValue); + } + + public int DraftEncrypt1(int TransactType,char YwType,String Date,String SerialNo,String Amount,String SendNode,String RecvNode,String OtherInfo,String CipherValue) throws IOException + { + int ret_code ; + + ret_code = CipherTransact(TransactType, YwType, Date, SerialNo, Amount, SendNode, RecvNode, OtherInfo, CipherValue); + if((ret_code == 9001) || (ret_code == 9002) || (ret_code == 9003) + || (ret_code == 9011) || (ret_code == 9009)) + { + CloseConnect_MY(); +// һѺͨѶԶõڶѺIPַ + ret_code = CipherTransact(TransactType, YwType, Date, SerialNo, Amount, SendNode, RecvNode, OtherInfo, CipherValue); + return ret_code; + } + else + { + return ret_code; + } + } + + public int SetParamAll(String My_IPAdress1,String My_IPAdress2,int TimeOut) + { + int ret; + + ret=My_IPAdress1.length(); + if(ret>99) + return -1; + ServerName1=My_IPAdress1; + + ret=My_IPAdress2.length(); + if(ret>99) + return -2; + ServerName2=My_IPAdress2; + + if(TimeOut<2) + m_TimeOut=2; + else if(TimeOut>120) + m_TimeOut=120; + else + m_TimeOut=TimeOut; + return 0; + } + private static char[] enlargechar(char[] summand, String addend, int from) { + int len = addend.length(); + for (int i = 0; i < len; i++) { + summand[from + i] = addend.charAt(i); + } + return summand; + } + + public Socket testIP(String ip, int port) throws NumberFormatException, UnknownHostException, IOException { + SocketAddress ipt; + Socket socket1; + + try { + System.out.print("IP:"+ip+" port:"+port); + ipt = new InetSocketAddress(ip, port); + socket1 = new Socket(); + socket1.connect(ipt, 1000); + if (socket1.isClosed() == false && socket1.isConnected() == true) + return socket1; + } catch (ConnectException e) { + System.out.println("ע⣺"+ip+ "쳣"); + } catch (SocketTimeoutException e) { + System.out.println("ע⣺"+ip+ "Socketӳʱ쳣"); + } + return null; + } + + public BufferedOutputStream getBufferedWriter(Socket socket) throws IOException { + OutputStream out = socket.getOutputStream(); + BufferedOutputStream writer = new BufferedOutputStream(out); + return writer; + } + public BufferedInputStream getBufferedRead(Socket socket) throws IOException { + InputStream in = socket.getInputStream(); + BufferedInputStream reader = new BufferedInputStream(in); + return reader; + } + private byte[] getBytes (char[] chars) { + Charset cs = Charset.forName ("UTF-8"); + CharBuffer cb = CharBuffer.allocate (chars.length); + cb.put (chars); + cb.flip (); + ByteBuffer bb = cs.encode (cb); + return bb.array(); + } + private char[] getChars (byte[] bytes) { + Charset cs = Charset.forName ("UTF-8"); + ByteBuffer bb = ByteBuffer.allocate (bytes.length); + bb.put (bytes); + bb.flip (); + CharBuffer cb = cs.decode (bb); + return cb.array(); + } + + private char[] getSerialNo(String s){ + char hex[] =new char[8]; + char ch ; + for(int i=0;i='0'&&ch<='9'){ + ch-='0'; + } + if(ch>='A'&&ch<='F'){ + ch=(char) (ch-'A'); + ch=(char) (ch+10); + } + if(i%2==0) + { + hex[i/2]=(char) (ch<<4); + } + else + { + hex[i/2]=(char) (hex[i/2]|ch); + } + + } + return hex; + } + public int CipherTransact(int TransactType,char YwType,String Date,String SerialNo,String Amount,String SendNode,String RecvNode,String OtherInfo,String CipherValue) throws NumberFormatException, UnknownHostException, IOException + { +// unsigned char Send_Data[2000],Recv_Data[2000]; + char Send_Data[] = new char[180]; + char Recv_Data[] = new char[2000]; + + String temp; + int Len_No,Len_Send; +// int i; +// unsigned int my_value; + //Package +// memset(Send_Data,0x00,180); + int s =0; + + + + + + + for (int j = 0; j < Send_Data.length; j++) { + Send_Data[j] = 0x00; + } +// memcpy(Send_Data,"SYD",3); + Send_Data[0]='S'; + Send_Data[1]='Y'; + Send_Data[2]='D'; + + Send_Data[3]=1; + Send_Data[4]=(char)(m_MyLoopNum/256); + Send_Data[5]=(char)(m_MyLoopNum%256); + m_MyLoopNum=(m_MyLoopNum+1)%65536; + + Send_Data[6]=0; + Send_Data[7]=124+32+5; + + if(SerialNo.length()==16){ + s =18000+TransactType; + char[] hex=getSerialNo(SerialNo); + String ss = ""; + for(int i=0;i12) +// Len_No=12; +// memcpy(Send_Data+8+32+37+(12-Len_No),SendNode,Len_No); + Len_No = SendNode.length(); + if(Len_No>12){ + Len_No=12; + SendNode = SendNode.substring(0,12); + } + Send_Data = enlargechar(Send_Data, SendNode, 77+(12-Len_No)); + +// Len_No=strlen(RecvNode); +// if(Len_No>12) +// Len_No=12; +// memcpy(Send_Data+8+32+49+(12-Len_No),RecvNode,Len_No); + Len_No = RecvNode.length(); + if(Len_No>12){ + Len_No=12; + RecvNode = RecvNode.substring(0,12); + } + Send_Data = enlargechar(Send_Data, RecvNode, 89+(12-Len_No)); + +// memcpy(Send_Data+8+32+61,OtherInfo,60); + //ding + + +// if(SerialNo.length()==16){ +// s =18000+TransactType; +// char[] hex=getSerialNo(SerialNo); +// String ss = ""; +// for(int i=0;i='0'&&ch<='9'){ + ch-='0'; + } + if(ch>='A'&&ch<='F'){ + ch=(char) (ch-'A'); + ch=(char) (ch+10); + } + if(i%2==0) + { + hex[i/2]=(char) (ch<<4); + } + else + { + hex[i/2]=(char) (hex[i/2]|ch); + } + + } + return hex; + }//ѹַ + + public static void main(String[] args) throws IOException { + // TODO Auto-generated method stub + /***************************************************************************** + DraftEncrypt:Ѻ + int DraftEncrypt(int TransactType,char YwType,String Date,String SerialNo, + String Amount,String SendNode, String RecvNode, String OtherInfo,String CipherValue, + String My_IPAdress1,String My_IPAdress2,int TimeOut) + ˵ + TransactType͡2kѺ 2k+1Ѻ + (k = 0,ֻһԿѺI) + kΪ0k9,10ԿͣѺII) + YwType ҵ(0x01,0x02,0x03,0x04,0x05) + (0x01=ֽƱ,0x02=תתʻƱ, + 0x03=תתʻƱ,0x04=鸴ҵ,0x05=ҵ) + Date ǩƱ(磺"19990101") + SerialNo Ʊ(8λ"12345678"16λ1234567812345678) + Amount (λΪ,С,15λǰ'0') + SendNode ǩţ(磺"000000123456") 12λǰ'0' + RecvNode Ҹţȫ'0' + ҵʱΪ904290099992 + OtherInfo ǰĸֽΪ鸴ţȫ0x00ȫ0x00 + 硰12345678ѹĸֽΪ0x12,0x34,0x56,0x78 + 8λǰ㣬硰12345ѹĸֽΪ0x00,0x01,0x23,0x45 + CipherValueѺ + ѺʱֵΪѺ + ѺʱֵΪѺ + My_IPAdress1: IPַ1 + My_IPAdress2: IPַ2 + TimeOut ʱʱ + ѺʱͨĺӿڣgetCipherValue() һStringַ + ѺʱֵΪѺ + + ֵ + 0 ʾѺʱѺCipherValueֶηأѺʾѺȷ . + >0ѺϵͳҪػѺкзǷֵѺͨѶ . + 룺 + 9001 + 9002 ʹ + 9003 մ + 9004 Ѻ + 9005 Ѻ + 9006 ˶ǩ + 9007 бʶ + 9008 ձбʶ + 9009 ܿ쳣 + 9010 ݱĴ + 9011 ͨųʱ + 9012 ޱѺȨ + 9013 Կ + 9014 ҸкŴ,ҵΪҵʱҸкŲΪ904290099992ʱظô + 9015 Կ + 9016 ʽ + + */ + + //ѺֵΪ0˵ѺҿͨgetCipherValue()Ѻ + + int TransactType =3; + char YwType =(char)0x04; + String Date = "20020422"; + String SerialNo = "9934567812345678"; + String Amount = "000000000000100"; + String SendNode = "001420100008"; + String RecvNode = "001420101021"; + String OtherInfo = "99999999"; + String CipherValue = "0000000000"; + String My_IPAdress1 = "172.16.8.113"; + String My_IPAdress2 = "172.16.8.113"; + int TimeOut = 100; + if(TransactType%2 == 1) + { + CipherValue = "3979564876";//ѺҪ + } + if(OtherInfo.length()>=8){ + char[] hex1=getSerialNo(OtherInfo); + String ssss = ""; + for(int i=0;i<4;i++){ + ssss=ssss+hex1[i]; + } + OtherInfo=ssss; + }//鸴ʱѹַ + DraftEncrypt de = new DraftEncrypt(); + int ret = de.DraftEncrypt(TransactType,YwType,Date,SerialNo,Amount, + SendNode, RecvNode,OtherInfo,CipherValue,My_IPAdress1,My_IPAdress2,TimeOut); + /*int ret = de.DraftEncrypt(0, (char) 0x04, "20020422", "9934567812345678", "00000000.0000100", + "001420100008", "001420101021", "99999999", "2448307857",//һַ + "172.16.8.113", "172.16.8.113", 100);*/ + if(TransactType%2 == 0) + { + CipherValue = de.getCipherValue();//ֻбѺʱҪ + } + //ѺֵΪ0,˵ֵͨ˵ +/* DraftEncrypt de = new DraftEncrypt(); + int ret = de.DraftEncrypt(0, (char) 0x01, "20020422", "10000000", "000000000000100", + "001420100008", "001420101021", "", "096711466", + "192.168.1.212", "192.168.1.212", 100); +*/ + + switch(ret){ + case 0: + if(TransactType%2 == 0) + System.out.println("ѺѺǣ"+CipherValue); + else + System.out.println("Ѻ"); + break; + case 9001: + System.out.println(""); + break; + case 9002: + System.out.println("ʹ"); + break; + case 9003: + System.out.println("մ "); + break; + case 9004: + System.out.println("Ѻ"); + break; + case 9005: + System.out.println("Ѻ"); + break; + case 9006: + System.out.println("˶ǩ"); + break; + case 9007: + System.out.println("бʶ"); + break; + case 9008: + System.out.println("ձбʶ"); + break; + case 9009: + System.out.println("ܿ쳣"); + break; + case 9010: + System.out.println("ݱĴ"); + break; + case 9011: + System.out.println("ͨųʱ"); + break; + case 9012: + System.out.println("ޱѺȨ"); + break; + case 9013: + System.out.println("Կ"); + break; + case 9014: + System.out.println("ҸкŴ"); + break; + case 9015: + System.out.println("Կ"); + break; + case 9016: + System.out.println("ʽ"); + break; + } + + } + +} diff --git a/密码设备应用软件_java接口程序_城银清算密押会员行_密押版_REL_1.00/城市商业银行密押系统应用程序接口说明(java版).doc b/密码设备应用软件_java接口程序_城银清算密押会员行_密押版_REL_1.00/城市商业银行密押系统应用程序接口说明(java版).doc new file mode 100644 index 0000000..9823cde Binary files /dev/null and b/密码设备应用软件_java接口程序_城银清算密押会员行_密押版_REL_1.00/城市商业银行密押系统应用程序接口说明(java版).doc differ diff --git a/密码设备应用软件_java接口程序_城银清算密押会员行_密押版_REL_1.00/城市商业银行密押系统应用程序接口说明(java版).pdf b/密码设备应用软件_java接口程序_城银清算密押会员行_密押版_REL_1.00/城市商业银行密押系统应用程序接口说明(java版).pdf new file mode 100644 index 0000000..430a172 Binary files /dev/null and b/密码设备应用软件_java接口程序_城银清算密押会员行_密押版_REL_1.00/城市商业银行密押系统应用程序接口说明(java版).pdf differ diff --git a/密码设备应用软件_java接口程序_城银清算密押会员行_密押版_REL_1.01/DraftEncrypt.jar b/密码设备应用软件_java接口程序_城银清算密押会员行_密押版_REL_1.01/DraftEncrypt.jar new file mode 100644 index 0000000..b6c0358 Binary files /dev/null and b/密码设备应用软件_java接口程序_城银清算密押会员行_密押版_REL_1.01/DraftEncrypt.jar differ diff --git a/密码设备应用软件_java接口程序_城银清算密押会员行_密押版_REL_1.01/DraftEncrypt.java b/密码设备应用软件_java接口程序_城银清算密押会员行_密押版_REL_1.01/DraftEncrypt.java new file mode 100644 index 0000000..7e79d9b --- /dev/null +++ b/密码设备应用软件_java接口程序_城银清算密押会员行_密押版_REL_1.01/DraftEncrypt.java @@ -0,0 +1,655 @@ +package com.sunyard.encrypt; + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.ConnectException; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.net.SocketAddress; +import java.net.SocketTimeoutException; +import java.net.UnknownHostException; +import java.nio.ByteBuffer; +import java.nio.CharBuffer; +import java.nio.charset.Charset; +import java.util.Properties; + +//#define ERR_CONNECT 9001 /*联机错误*/ +//#define ERR_SEND 9002 /*发送错误*/ +//#define ERR_RECV 9003 /*接收错误*/ +//#define ERR_CAL 9004 /*加押错误*/ +//#define ERR_CHECK 9005 /*核押错误*/ +//#define ERR_SIGN 9006 /*核对签名错误*/ +//#define ERR_SENDER 9007 /*发报行标识错误*/ +//#define ERR_RECEIVER 9008 /*收报行标识错误*/ +//#define ERR_EXCEPTION 9009 /*加密卡处理异常*/ +//#define ERR_DATA 9010 /*数据报文错误*/ +//#define ERR_TIMEOUT 9011 /*网络通信超时*/ +//#define ERR_PURVIEW 9012 /*发报行无编押权限*/ + +public class DraftEncrypt { + String ServerName1; /*密押服务器地址1*/ + String ServerName2; /*密押服务器地址2*/ + Socket sock_check; + int m_TimeOut; + int m_MyLoopNum; + int m_MyLoopFlag; + int m_port = 8889; + String m_CipherValue; + + public DraftEncrypt() throws IOException { + sock_check = null; + m_TimeOut=10; + m_MyLoopNum=0; + m_MyLoopFlag=0; + m_CipherValue = null; + m_port = 8889; + } + + public String getCipherValue() { + return m_CipherValue; + } + + public void setCipherValue(String cipherValue) { + m_CipherValue = cipherValue; + } + + public String config(String appName) { + InputStream is = this.getClass().getClassLoader().getResourceAsStream( + "config.ini"); + Properties p = new Properties(); + try { + p.load(is); + } catch (IOException e) { + e.printStackTrace(); + } + + return p.getProperty(appName); + } + public void CloseConnect_MY() throws IOException + { + if(sock_check!=null) { + //System.out.println("sock:"+sock_check); + sock_check.shutdownOutput(); + sock_check.close(); + sock_check = null; + } + if(m_MyLoopFlag==0) + m_MyLoopFlag=1; + else + m_MyLoopFlag=0; + } + + public int DraftEncrypt(int TransactType,char YwType, + String Date,String SerialNo,String Amount, + String SendNode, String RecvNode, String OtherInfo, + String CipherValue,String My_IPAdress1, + String My_IPAdress2,int TimeOut) throws IOException + { + + int len = OtherInfo.length(); + if(len<8){ + OtherInfo = addZero(OtherInfo, 8); + }else{ + if(len%2 == 1){ + len+=1; + } + OtherInfo = addZero(OtherInfo, len); + } + /*char[] byteOther = getSerialNo(OtherInfo); + for(int i =0 ;i=8){ + char[] hex1=getSerialNo(OtherInfo); + System.out.println(hex1); + String ssss = ""; + for(int i=0;i<4;i++){ + ssss=ssss+hex1[i]; + } + OtherInfo=ssss; + } + System.out.println(BytesToString(OtherInfo.getBytes())+OtherInfo.length()); + int y =OtherInfo.charAt(0); + char a = 0x88; + byte a1 = (byte) a; + int a2 = a; + System.out.println(y); + + SetParamAll(My_IPAdress1,My_IPAdress2,TimeOut); +// System.out.println("in DraftEncrypt, hello!!!"); +// m_CipherValue = "1234567890"; +// return 0; + return DraftEncrypt1(TransactType,YwType,Date,SerialNo,Amount,SendNode,RecvNode,OtherInfo,CipherValue); + } + + public int DraftEncrypt1(int TransactType,char YwType,String Date,String SerialNo,String Amount,String SendNode,String RecvNode,String OtherInfo,String CipherValue) throws IOException + { + int ret_code ; + + ret_code = CipherTransact(TransactType, YwType, Date, SerialNo, Amount, SendNode, RecvNode, OtherInfo, CipherValue); + if((ret_code == 9001) || (ret_code == 9002) || (ret_code == 9003) + || (ret_code == 9011) || (ret_code == 9009)) + { + CloseConnect_MY(); +// 如 果第一个密押服务器通讯错误,则自动用第二个密押服务器的IP地址 + ret_code = CipherTransact(TransactType, YwType, Date, SerialNo, Amount, SendNode, RecvNode, OtherInfo, CipherValue); + return ret_code; + } + else + { + return ret_code; + } + } + + public int SetParamAll(String My_IPAdress1,String My_IPAdress2,int TimeOut) + { + int ret; + + ret=My_IPAdress1.length(); + if(ret>99) + return -1; + ServerName1=My_IPAdress1; + + ret=My_IPAdress2.length(); + if(ret>99) + return -2; + ServerName2=My_IPAdress2; + + if(TimeOut<2) + m_TimeOut=2; + else if(TimeOut>120) + m_TimeOut=120; + else + m_TimeOut=TimeOut; + return 0; + } + private static char[] enlargechar(char[] summand, String addend, int from) { + int len = addend.length(); + for (int i = 0; i < len; i++) { + summand[from + i] = addend.charAt(i); + } + return summand; + } + + public Socket testIP(String ip, int port) throws NumberFormatException, UnknownHostException, IOException { + SocketAddress ipt; + Socket socket1; + + try { + System.out.print("IP:"+ip+" port:"+port); + ipt = new InetSocketAddress(ip, port); + socket1 = new Socket(); + socket1.connect(ipt, 1000); + if (socket1.isClosed() == false && socket1.isConnected() == true) + return socket1; + } catch (ConnectException e) { + System.out.println("注意:"+ip+ "连接异常!"); + } catch (SocketTimeoutException e) { + System.out.println("注意:"+ip+ "Socket连接超时异常!"); + } + return null; + } + + public BufferedOutputStream getBufferedWriter(Socket socket) throws IOException { + OutputStream out = socket.getOutputStream(); + BufferedOutputStream writer = new BufferedOutputStream(out); + return writer; + } + public BufferedInputStream getBufferedRead(Socket socket) throws IOException { + InputStream in = socket.getInputStream(); + BufferedInputStream reader = new BufferedInputStream(in); + return reader; + } + private byte[] getBytes (char[] chars) { + Charset cs = Charset.forName ("UTF-8"); + CharBuffer cb = CharBuffer.allocate (chars.length); + cb.put (chars); + cb.flip (); + ByteBuffer bb = cs.encode (cb); + return bb.array(); + } + private char[] getChars (byte[] bytes) { + Charset cs = Charset.forName ("UTF-8"); + ByteBuffer bb = ByteBuffer.allocate (bytes.length); + bb.put (bytes); + bb.flip (); + CharBuffer cb = cs.decode (bb); + return cb.array(); + } + + private char[] getSerialNo(String s){ + char hex[] =new char[8]; + char ch ; + for(int i=0;i='0'&&ch<='9'){ + ch-='0'; + } + if(ch>='A'&&ch<='F'){ + ch=(char) (ch-'A'); + ch=(char) (ch+10); + } + if(i%2==0) + { + hex[i/2]=(char) (ch<<4); + } + else + { + hex[i/2]=(char) (hex[i/2]|ch); + } + + } + return hex; + } + public int CipherTransact(int TransactType,char YwType,String Date,String SerialNo,String Amount,String SendNode,String RecvNode,String OtherInfo,String CipherValue) throws NumberFormatException, UnknownHostException, IOException + { +// unsigned char Send_Data[2000],Recv_Data[2000]; + char Send_Data[] = new char[180]; + char Recv_Data[] = new char[2000]; + + String temp; + int Len_No,Len_Send; +// int i; +// unsigned int my_value; + //Package +// memset(Send_Data,0x00,180); + int s =0; + + + + + + + for (int j = 0; j < Send_Data.length; j++) { + Send_Data[j] = 0x00; + } +// memcpy(Send_Data,"SYD",3); + Send_Data[0]='S'; + Send_Data[1]='Y'; + Send_Data[2]='D'; + + Send_Data[3]=1; + Send_Data[4]=(char)(m_MyLoopNum/256); + Send_Data[5]=(char)(m_MyLoopNum%256); + m_MyLoopNum=(m_MyLoopNum+1)%65536; + + Send_Data[6]=0; + Send_Data[7]=124+32+5; + + if(SerialNo.length()==16){ + s =18000+TransactType; + char[] hex=getSerialNo(SerialNo); + String ss = ""; + for(int i=0;i12) +// Len_No=12; +// memcpy(Send_Data+8+32+37+(12-Len_No),SendNode,Len_No); + Len_No = SendNode.length(); + if(Len_No>12){ + Len_No=12; + SendNode = SendNode.substring(0,12); + } + Send_Data = enlargechar(Send_Data, SendNode, 77+(12-Len_No)); + +// Len_No=strlen(RecvNode); +// if(Len_No>12) +// Len_No=12; +// memcpy(Send_Data+8+32+49+(12-Len_No),RecvNode,Len_No); + Len_No = RecvNode.length(); + if(Len_No>12){ + Len_No=12; + RecvNode = RecvNode.substring(0,12); + } + Send_Data = enlargechar(Send_Data, RecvNode, 89+(12-Len_No)); + +// memcpy(Send_Data+8+32+61,OtherInfo,60); + //ding + + +// if(SerialNo.length()==16){ +// s =18000+TransactType; +// char[] hex=getSerialNo(SerialNo); +// String ss = ""; +// for(int i=0;i= '0' && hex_char1 <= '9') + int_ch1 = (hex_char1 - 48) * 16; // // 0 锟斤拷Ascll - 48 + else if (hex_char1 >= 'A' && hex_char1 <= 'F') + int_ch1 = (hex_char1 - 55) * 16; // // A 锟斤拷Ascll - 65 + else + return null; + i++; + char hex_char2 = hexString.charAt(i); // /锟斤拷位16锟斤拷锟斤拷锟斤拷锟叫的第讹拷位(锟斤拷位) + int int_ch2; + if (hex_char2 >= '0' && hex_char2 <= '9') + int_ch2 = (hex_char2 - 48); // // 0 锟斤拷Ascll - 48 + else if (hex_char2 >= 'A' && hex_char2 <= 'F') + int_ch2 = hex_char2 - 55; // // A 锟斤拷Ascll - 65 + else + return null; + int_ch = int_ch1 + int_ch2; + retData[i / 2] = (byte) int_ch;// 锟斤拷转锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷Byte锟斤拷 + } + return retData; + } + +} diff --git a/密码设备应用软件_java接口程序_城银清算密押会员行_密押版_REL_1.01/Test.java b/密码设备应用软件_java接口程序_城银清算密押会员行_密押版_REL_1.01/Test.java new file mode 100644 index 0000000..6a51cbf --- /dev/null +++ b/密码设备应用软件_java接口程序_城银清算密押会员行_密押版_REL_1.01/Test.java @@ -0,0 +1,215 @@ +package com.sunyard.encrypt; + +import java.io.IOException; + +import com.sunyard.encrypt.DraftEncrypt; + + + +public class Test { + + /** + * @param args + * @throws IOException + */ + private static char[] getSerialNo(String s){ + char hex[] =new char[8]; + char ch ; + for(int i=0;i='0'&&ch<='9'){ + ch-='0'; + } + if(ch>='A'&&ch<='F'){ + ch=(char) (ch-'A'); + ch=(char) (ch+10); + } + if(i%2==0) + { + hex[i/2]=(char) (ch<<4); + } + else + { + hex[i/2]=(char) (hex[i/2]|ch); + } + + } + return hex; + }//压缩字符串 + + public static void main(String[] args) throws IOException { + // TODO Auto-generated method stub + /***************************************************************************** + DraftEncrypt:编核押函数 + int DraftEncrypt(int TransactType,char YwType,String Date,String SerialNo, + String Amount,String SendNode, String RecvNode, String OtherInfo,String CipherValue, + String My_IPAdress1,String My_IPAdress2,int TimeOut) + 参数说明: + TransactType:处理类型——2k:编押 2k+1:核押 + (k = 0,只有一种密钥,适用于密押机I型) + k为整数0≤k≤9,代表10种密钥类型,适用于密押机II型) + YwType: 业务种类(0x01,0x02,0x03,0x04,0x05) + (0x01=现金汇票,0x02=可转转帐汇票, + 0x03=不可转转帐汇票,0x04=查复书业务,0x05=划款业务) + Date: 签票日期(例如:"19990101") + SerialNo: 汇票号码(8位"12345678",或16位”1234567812345678”) + Amount: 金额 (单位为分,不含小数点,不足15位前补'0') + SendNode: 签发网点号,(例如:"000000123456") 不足12位前补'0' + RecvNode: 兑付网点号,若无则全填'0' + (划款业务时必须为”904290099992”) + OtherInfo: 前四个字节为查复书编号,其余全填0x00,若无则全填0x00 + (例如“12345678”压缩成四个字节为0x12,0x34,0x56,0x78 + 不足8位前补零,例如“12345”压缩成四个字节为0x00,0x01,0x23,0x45) + CipherValue:密押 + 编押时,出口值为计算出的密押 + 核押时,入口值为需核验的密押 + My_IPAdress1: IP地址1 + My_IPAdress2: IP地址2 + TimeOut: 超时时间 + 编押时,通过类的函数接口:getCipherValue() 返回一个String的字符串。 + 核押时,入口值为需核验的密押 + + 函数返回值: + 0: 表示处理正常,编押时密押在CipherValue字段返回,核押表示密押核验正确 . + >0:密押系统正常,但要素或密押中含有非法值,或者密押错误,通讯错误等 . + 错误代码: + 9001 联机错误 + 9002 发送错误 + 9003 接收错误 + 9004 编押错误 + 9005 核押错误 + 9006 核对签名错误 + 9007 发报行标识错误 + 9008 收报行标识错误 + 9009 加密卡处理异常 + 9010 数据报文错误 + 9011 网络通信超时 + 9012 发报行无编押权限 + 9013 密钥不存在 + 9014 兑付行号错误,当业务为划款业务时,如果兑付行号不为904290099992时返回该错误 + 9015 密钥过期 + 9016 金额格式错误 + + */ + + //编押:返回值为0,说明编押正常,且可以通过getCipherValue()获得密押。 + +/* int TransactType =3; + char YwType =(char)0x02; + String Date = "20151020"; + String SerialNo = "9040004122999001"; + String Amount = "000000000550000"; + String SendNode = "213162000019"; + String RecvNode = "000000000000"; + String OtherInfo = "0x00"; + String CipherValue = "0740128292"; + String My_IPAdress1 = "192.168.1.10"; + String My_IPAdress2 = "172.16.8.113";*/ + int TransactType =0; + char YwType =(char)0x2; + String Date = "20151020"; + String SerialNo = "12345678"; + String Amount = "000000000000100"; + String SendNode = "123456123456"; + String RecvNode = "904290099992"; + String OtherInfo = "123"; + String CipherValue = "1160747148"; + String My_IPAdress1 = "192.168.1.10"; + String My_IPAdress2 = "172.16.8.113"; + int TimeOut = 100; + /*if(TransactType%2 == 1) + { + CipherValue = "3979564876";//核押需要输入 + }*/ + /*if(OtherInfo.length()>=8){ + char[] hex1=getSerialNo(OtherInfo); + System.out.println(hex1); + String ssss = ""; + for(int i=0;i<4;i++){ + ssss=ssss+hex1[i]; + } + OtherInfo=ssss; + }*///查复书时压缩字符串 + + /* for(int i =0 ;i