modifyPassword(修改设备密码)
modifyPassword:修改设备密码
已弃用: 新接入请使用 修改设备密码(
device.password.set)。本页仅供存量 HTTP 对接查阅。
功能说明
修改设备密码。
说明:本接口以设备是否具备密码管理能力为准(历史上以 TCM 为主;现网亦支持其它型号,如 prosegur 等)。
请求地址
https://openapi-[DataCenter].easy4ip.com/openapi/modifyPassword
请求格式
请求参数
| 参数名 | 参数类型 | 是否必填 | 默认值 | 合法取值 | 参数说明 |
|---|---|---|---|---|---|
| token | String | 是 | 管理员 accessToken | ||
| deviceId | String | 是 | 设备序列号 | ||
| oldPassword | String | 条件 | 与 oldPasswordV2 二选一 | 设备旧密码(V1 加密),算法见下方 | |
| oldPasswordV2 | String | 条件 | 与 oldPassword 二选一 | 设备旧密码(V2 加密),算法见下方 | |
| newPassword | String | 条件 | 与 newPasswordV2 二选一 | 设备新密码(V1 加密),算法见下方 | |
| newPasswordV2 | String | 条件 | 与 newPassword 二选一 | 设备新密码(V2 加密),算法见下方 |
password 加密算法说明 计算公式:
Base64(AES256_CBC(sourcePassword, Key[], IV[]))加密规则如下:
- 采用 CBC 分组加密,算法为 AES/CBC/PKCS5Padding;
sourcePassword为设备明文密码;Key[]为密钥(key)的二进制数组;key = LowerCase(MD5(UpperCase(Base64(KDF(deviceId, MD5(appSecret)))))),KDF 算法为 PBKDF2WithHmacSHA256,迭代 1200 次,导出密钥长度 256 位;IV[]为初始化向量二进制数组,取值为MD5(appSecret)(Java 自带MessageDigest的 MD5 算法)。设备新密码规则要求:
- 密码须至少包含数字、大写字母、小写字母、特殊字符中的两类,长度 8~32 位;特殊字符指除
'、"、;、:、&、空格以外的任意可见字符;- 密码不能包含中文字符。
oldPasswordV2 / newPasswordV2 加密(V2)
与 v2 能力接口 device.password.set 使用同一算法:
设备密码字段加密(v2 OpenAPI)
适用字段:device.password.verify 的 passwordV2;device.password.set 的 oldPasswordV2、newPasswordV2。三者同一套算法(与绑定页 encryptCodeV2 同族,字段名不同)。
| 步骤 | 说明 |
|---|---|
| 1. 明文 | 设备密码 UTF-8 字符串(newPasswordV2 须先满足下文强度规则再加密) |
| 2. 因子 | pwdFactor = "op_api_" + appId + "_PWD_KEY_" + deviceId(appId 取请求 system.appId,须与派生时一致) |
| 3. Salt | salt = SHA-256(UTF-8(pwdFactor)) 的前 16 字节 |
| 4. PBKDF2 | PBKDF2WithHmacSHA256:password=deviceId,salt=上一步,迭代 1200 次,导出 256 位 → kdfRaw |
| 5. AES 密钥 | kdfBase64 = Base64(kdfRaw)(标准 Base64);aesKey = SHA-256(UTF-8(kdfBase64.toUpperCase())) → 32 字节 AES-256 密钥 |
| 6. Nonce | 加密时随机 12 字节(每次加密不同) |
| 7. 加密 | AES/GCM/NoPadding,GCM tag 128 bit;密文块 = AES-GCM(明文)(含 tag) |
| 8. 传参值 | Base64(nonce[12] ‖ 密文块),作为对应字段字符串 |
不使用 appSecret 参与 v2 密钥派生。
新密码明文(仅 newPasswordV2 加密前):长度 8~32;数字、大写字母、小写字母、特殊字符中至少两类;特殊字符为除 '、"、;、:、&、空格外的可见字符;不得含中文。
验密成功后改密:可将本次请求的 passwordV2 整段密文原样填入 oldPasswordV2(同一 appId、deviceId、同一明文)。
请求示例
{
"id":"d5c287b4-5b2f-4f03-baf5-8032c5c354af",
"system":{
"ver":"1.0",
"appId":"lcdxxxxxxxxx",
"sign": "xjhCQBoJ9hRDsCjyDcHjtDNzRZ3ZJezcawsfWeiaoxU=",
"time":1599031074,
"nonce":"8ec8a7bd1d1c95420de20d92422d457d"
},
"params":{
"token":"At_00006acr3456d12312d3grf60147de7ec",
"deviceId":"TESTQWERXXXX",
"oldPassword":"jdueu37ajusdii3873jsc8",
"newPassword":"ewurosd739fdjf102kg823"
}
}
返回 data 字段
无返回数据
响应示例
{
"result":{
"msg":"操作成功.",
"code":"0"
},
"id":"d5c287b4-5b2f-4f03-baf5-8032c5c354af"
}
错误码
网关与鉴权(SN / TK / OP)
| 错误码 | 错误码说明 | 下一步 |
|---|---|---|
SN1001 | 签名校验异常 | 按 HTTP 开发规范 核对 sign |
TK1002 | token 无效或过期 | 重新获取 accessToken |
OP1002 | 缺少必填参数 | 补必填字段 |
OP1003 | 参数不合法 | 按本页参数表核对 |
OP1009 | 权限不足 | 核对 token 与设备绑定/分享权限 |
OP1013 | 接口总次数超限 | 降低调用频率 |
OP1014 | 接口日限额超限 | 见 接口调用限额 |
DV1007 | 设备离线 | 等设备上线 |
更多见 错误码 · OP/SN/TK。
子账号(SUB)
| 错误码 | 错误码说明 | 下一步 |
|---|---|---|
SUB1001–SUB1002 | 子账号无接口权限 | 在 addPolicy 中补策略 |
SUB1005 | 子账号 token 过期 | 重新 subAccountToken |
SUB1006 | 子账号与设备无授权 | 核对 Resource 与设备序列号 |
SUB1008 | 子账号未绑定应用 | 先创建并绑定子账号 |
更多见 错误码 · SUB。
设备访问与通道(DV10xx)
| 错误码 | 错误码说明 | 下一步 |
|---|---|---|
DV1007 | 设备离线或超时 | 等设备上线 |
DV1009 | 设备正忙 | 稍后重试 |
DV1012 | 分享/授权设备权限不足 | 核对子账号 Permission / Resource |
DV1019 | 能力集不支持 | 确认型号与能力列表 |
DV1020 | 通道离线 | 检查通道状态 |
DV1026 | 不支持此功能 | 换接口或升级固件 |
DV1028 | 未绑定或通道不存在 | 核对 deviceId / channelId |
更多见 错误码 · DV。
设备密码(DV10xx)
| 错误码 | 错误码说明 | 下一步 |
|---|---|---|
DV1016 | 设备密码错误 | 核对旧密码 |
| :--- | :--- | :--- |
DV1025 | SC 码或密码错误 | 核对安全码 |
| :--- | :--- | :--- |
DV1027 | 安全码错误 | 核对设备安全码 |
| :--- | :--- | :--- |
DV1042 | 密码错误次数过多已锁定 | 等待解锁 |
| :--- | :--- | :--- |
DV1054 | 新密码不符合规则 | 按本页密码规则修改 |
