自定义JSON 数据格式详解:手机APP 侧使用说明 Requset ? { “KeyId” : “string” } 此数据格式,为客户端请求与服务器建立交互密钥连接使用,使用明文传输,不需要加密。KeyId : 为插在设备上面的标识 Id 号码 获取 KeyId 需要调用的函数依次如下: Java_cpk_com_jni_TCard_Open 打开外接TF 卡设备 (JNIEnv *jenv, jclass jc, jint pinType, jbyteArray jpin, jint pinLen) 输入参数如下: pinType : 1 超级用户 2 普通用户 使用普通用户打开设备 jpin : 8 个 0x31 pinLen : 8 JNICALL Java_cpk_com_jni_TCard_GetCertId (JNIEnv *jenv, jclass jc, jint keyId) 输入参数如下: keyId 的序列号 : 统一传入 0x00 返回值 : KeyId 号码 调用如上两个函数就可以获取到外接TF 卡设备的 KeyId 号码 Request_result ? { “Public_key” : “string”, “Private_key” : “string” } 当客户端发送 Request 请求过来时候,服务器会生成一个随机数a,利用随机数a 作为标识 Id,生成随机数a 的公私钥对,Public_key 字段为随机数a 的公钥,Private_key 字段为随机数a 的私钥,此数据通信的时候,使用客户端发送过来的标识 Id 的公钥加密。 解密上面格式的数据使用如下函数: JNIEXPORT jbyteArray JNICALL Java_cpk_com_jni_TCard_Decrypt (JNIEnv *jenv, jclass jc, jint keyId, jbyteArray jcipher, jint cipherLen) 输入参数解释如下: keyId: 序列号 统一传入 0x00 jcipher: 从服务器获取到的密文数据 cipherLen: 密文数据的长度 返回值为:解密后的数据 Register ? { “KeyId” : “string”, “username” : “string”, “passwd” : “string” } 此数据格式为客户端向服务器注册用户名和密码使用,通信的时候使用Request_result?中的随机数a 的公钥加密通信。 加密上面的数据使用如下函数调用: JNIEXPORT jbyteArray JNICALL Java_cpk_com_jni_TCard_ECCEncrypt (JNIEnv *jenv, jclass jc, jbyteArray key, jbyteArray jcipher, jint cipherLen) 输入参数解释如下: key : 为发起建立连接时候从服务器下发的Request_result? { “Public_key”:”string”, “Private_key”:”string” } 中Public_key 字段数据 Jcipher:需要加密的数据 cipherLen:需要解密的明文数据长度 ...