APP接口

# 加密处理简述

鉴于安全性的考虑,目前需要对下发的指令和数据,在下发前,对其进行加密,然后发送到服务器端。由服务器端进行校验,并对指令进行提取。
【整体思路主要参考上海新能源地标的操作,简述如下:】
采用RSA加密方式加密。公钥私钥配对,将由平台生成。

# 1.公钥PubKey

E5ltC1lkRJ3or0AdodGgnN1csx7aBe9So2MACYourfJabnGPufknIJ82IyRqOiGBtXO+9BByMSsURoX0jNFfDjn0aPdqz1QS3vgLoRYgazwP66/F0X2yrYPxqeQdYEnH2lI95w5ZOl02zjCXJ+RdETANHrm0/NyaqYzMwB4HYig=

# 2.加密及签名规则

a)按顺序拼接输入参数得到字符串A
b)对拼接的字符串A做MD5加密运算得到字符串B
c)设置token参数值为该字符串B
d)对Body的整个串加密

# 示例

为描述方便,假设有一个第三方公司需要接入,平台提供了如下信息:
平台登录用户名为:Test
平台登录密码为:abcdef123456
调用接口API时间戳为:1487830369942

# 1.根据调用的接口API,按顺序拼接参数得到字符串A,如下所示

encrypt=RSA,user=Test,secretKey=abcdef123456,operatype=1, timestamp=1487830369942

# 2.对拼接的字符串A做MD5加密运算得到字符串为

8a08aa97972b74ac8c5764135674faa4

# 3.设置header中token参数值为:

8a08aa97972b74ac8c5764135674faa4

# 4.body参数加密

假定需要传输2辆车的信息,如下JSON串BODYSTR为:
data =[{"vincode":"123456789",},{"vincode":"1234567890"}]
使用公钥将JSON串BODYSTR进行RSA加密,再将加密结果进行base64编码得到加密串,将得到加密密文ENCSTR放到body里传输,后台使用私钥解密。示例BODYSTR的加密串ENCSTR如下所示: byJEe9VYrPZ1SEjVr6l9RQ5t3b+c+ctda7bi3blwNY02jh2z0dLI/MrRN8tmGSWNR6HzOQ03mG94BJwzd8YKjh0Oq4sXabN2qzG9Gv4hzYy4HAZP42nnLVbIOYJ8SZOIO/uSg2XOMb9jpb5odb7sHE1Y0Uq3Ao9CQJAzJ7icHyuG+FVQrYCEYPwXR6l+KuT1DOPmy78V+ePKCDTugffJ/UeZ0ZzbmEfNdOo6FwiBDCOkVYvceou9LA+mC/AszASdRdTKptyCqlawGEWy+Ex46yvZ+fkQOk61JoCSmjptAnylPDtSxNtJvm7Vmj8MmpdxPv2YRhcfroD3h7c8uKEoMA==

# 5.最终发送的串为

encrypt=RSA,user=Test,secretKey=abcdef123456,operatype=1, timestamp=1487830369942, token=8a08aa97972b74ac8c5764135674faa4, body=byJEe9VYrPZ1SEjVr6l9RQ5t3b+c+ctda7bi3blwNY02jh2z0dLI/MrRN8tmGSWNR6HzOQ03mG94BJwzd8YKjh0Oq4sXabN2qzG9Gv4hzYy4HAZP42nnLVbIOYJ8SZOIO/uSg2XOMb9jpb5odb7sHE1Y0Uq3Ao9CQJAzJ7icHyuG+FVQrYCEYPwXR6l+KuT1DOPmy78V+ePKCDTugffJ/UeZ0ZzbmEfNdOo6FwiBDCOkVYvceou9LA+mC/AszASdRdTKptyCqlawGEWy+Ex46yvZ+fkQOk61JoCSmjptAnylPDtSxNtJvm7Vmj8MmpdxPv2YRhcfroD3h7c8uKEoMA==

# 1.用户名登录

# 1.1. 接口功能

APP用户使用用户名密码登录OBOS

# 1.2. URL

http://ip:port/api/usrlogin

# 1.3. 请求方式

POST

# 1.4. 请求参数

参数名称 参数类型 是否必选 参数说明
timestamp Long True 时间戳
user String True 登录用户名
token Integer True 校验值
body String True body串为对{“passwd”:”12345678”}串加密后所得

# 1.5. 接口返回

参数名称 参数类型 参数说明
retStr String 加密后的内容

# 1.6. 接口示例

http://localhost:8080/api/usrlogin

{
    "retStr": "SbNWrRi6h/KYUYYmeXv/mMPIgQ+ELjZW5/oyu9o/NPIAcZTazLxqyw/IHdH2SwoupPPcfvWUwJ3fEJpsG+JhZGFrzAxTWKB005urT0/DEHviPQgC4VGrEDlldOZzjlnJcWlXHWfEco7SvvHpMlx2Hsr1OT7c+NclUfp1cMIAJ1tLNb0rlQ/9iUCJzwXqtCV3cYc5PIu9pNM0fN1wDAhdqqI+/qgHwpRpxC7cIiT5PDxMBPDk+iN655TiOo3T2HzvPaNi46pGmXH9ftoORc126oGzIlrKU8KRkrzM2Dqa3ez1G58ahS0xECbcM9umi3fUFKxhaRe9r3DW/5MH+qP05Q=="
}
1
2
3

# 2.VIN码登录

# 2.1. 接口功能

使用VIN登录。

# 2.2. URL

http://ip:port/api/vinlogin

# 2.3. 请求方式

POST

# 2.4. 请求参数

参数名称 参数类型 是否必选 参数说明
timestamp Long True 时间戳
user String True 登录用户名
token Integer True 校验值
body String True body串为对{“passwd”:”12345678”,vincode:qwe12345rt6}加密后所得

# 2.5. 接口返回

参数名称 参数类型 参数说明
retStr String 加密后的内容,包含sessionid字段

# 2.6. 接口示例

http://localhost:8080/api/vinlogin

{
    "retStr": "SbNWrRi6h/KYUYYmeXv/mMPIgQ+ELjZW5/oyu9o/NPIAcZTazLxqyw/IHdH2SwoupPPcfvWUwJ3fEJpsG+JhZGFrzAxTWKB005urT0/DEHviPQgC4VGrEDlldOZzjlnJcWlXHWfEco7SvvHpMlx2Hsr1OT7c+NclUfp1cMIAJ1tLNb0rlQ/9iUCJzwXqtCV3cYc5PIu9pNM0fN1wDAhdqqI+/qgHwpRpxC7cIiT5PDxMBPDk+iN655TiOo3T2HzvPaNi46pGmXH9ftoORc126oGzIlrKU8KRkrzM2Dqa3ez1G58ahS0xECbcM9umi3fUFKxhaRe9r3DW/5MH+qP05Q=="
}
1
2
3

# 3. 参数下发

# 3.1. 接口功能

停止指定设备指定通道下的实时流推送。

# 3.2. URL

http://ip:port/api/sendCommand

# 3.3. 请求方式

POST

# 3.4. 请求参数

参数名称 参数类型 是否必选 参数说明
timestamp Long True 时间戳
user String True 登录用户名
token Integer True 校验值
body String True body串为对{“cmdtype”:1}加密后所得

# 3.5. 接口返回

参数名称 参数类型 参数说明
retStr String 加密后的内容

# 3.6. 接口示例

http://localhost:8080/api/sendCommand

{
    "retStr": "H310qVDiEnoQESFj88N6iVzf8DkX/3+x5FY27mmhwTTuJchsBf33reMvFNMyi0QPkgcR+wx/fn3kOSIBM9KRHZJ/XjTuYneYRH1t6EDT/2+isVahyCUBFFSHwqV4SkB0NumUjfuXaCqOOcw5M7w0jnTTOXX2bNTDX/kdakWVn0U="
}
1
2
3

# 4. 查询任务状态

# 4.1. 接口功能

查询终端的任务执行状态。

# 4.2. URL

http://ip:port/api/queryTaskStatus

# 4.3. 请求方式

POST

# 4.4. 请求参数

参数名称 参数类型 是否必选 参数说明
timestamp Long True 时间戳
user String True 登录用户名
token Integer True 校验值
body String True 详细信息

# 4.5. 接口返回

参数名称 参数类型 参数说明
retStr String 加密后的内容

# 4.6. 接口示例

http://localhost:8080/api/queryTaskStatus

{
    "retStr": "jMKXAbf8k+TUJN1kBz5bo8nGaKOkyLq9KjkwcoGeus51T540sW1B6sUwCJYt6AvnGzdPx8mhv990kAG70Sia7fdIwQHP3TaIVd1wFc4JtajJHAF+0pZKV6Y6CfaqsQmavxXjbSSRwNoRPV/Q3AZD5ML/e0rfWRpMnWSlE2L11SQ="
}
1
2
3

# 5. 获取服务器列表

# 5.1. 接口功能

App在启动时,首页需要显示所支持的服务器列表。此接口用于获取列表。

# 5.2. URL

http://ip:port/api/getAppServerList

# 5.3. 请求方式

GET

# 5.4. 请求参数

参数名称 参数类型 是否必选 参数说明

# 5.5. 接口返回

参数名称 参数类型 参数说明
retStr String 加密后的内容
servername String 服务器名称
serverinfo String 服务器信息
servertype String 1:公网 2:专网(不用访问鸿途)

# 5.6. 接口示例

http://localhost:8080/api/getAppServerList

{
    "retStr": "jMKXAbf8k+TUJN1kBz5bo8nGaKOkyLq9KjkwcoGeus51T540sW1B6sUwCJYt6AvnGzdPx8mhv990kAG70Sia7fdIwQHP3TaIVd1wFc4JtajJHAF+0pZKV6Y6CfaqsQmavxXjbSSRwNoRPV/Q3AZD5ML/e0rfWRpMnWSlE2L11SQ="
}
1
2
3
Last Updated: 4/27/2021, 2:20:26 PM