device.password.verify(验密)
device.password.verify:验密
功能详情
入参 passwordV2(deviceId 上下文 AES 密文,非明文)。本方法不会出现在 device.capability.list 里。通过时 data 为 {}。与改密 oldPasswordV2 / newPasswordV2 同规则。改密见 改密。
请求地址
POST https://openapi-[DataCenter].easy4ip.com/openapi/v2/device.password.verify
最小权限
管理员操作自己绑定的设备不需要权限。操作被分享设备需要基础配置权限。子用户绑定不需要。子账号需要 Config。
传入参数说明
| 参数名 | 参数类型 | 是否必填 | 默认值 | 合法值 | 参数说明 |
|---|---|---|---|---|---|
token | String | 是 | 管理员、子用户或子账号 accessToken | ||
deviceId | String | 是 | 设备序列号 | ||
productId | String | 否 | 可省略。传了且与该设备实际型号不一致 → DV2009 | ||
passwordV2 | String | 是 | 设备密码 v2 密文(见下文「密码字段加密」) |
密码字段加密
设备密码字段加密(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": 1706511734,
"nonce": "f5a1ae2d-c09c-4d39-a744-83a5c2c653c2"
},
"params": {
"token": "<yourAccessToken>",
"deviceId": "TESTIPC000012345",
"passwordV2": "encrypted-password"
}
}
返回 data 字段说明
无业务字段。成功时 code 为 "0",data 为 {}。
样例输出
{
"id": "d5c287b4-5b2f-4f03-baf5-8032c5c354af",
"result": {
"code": "0",
"msg": "Operation is successful",
"data": {}
}
}
错误码
本接口可能返回下列码。
| 错误码 | 错误码说明 | 下一步 |
|---|---|---|
SN1001 | 签名校验异常 | 按 HTTP 开发规范 核对 sign |
TK1002 | token 无效或过期 | 重新获取 accessToken |
OP1002 | 缺少必填参数 | 补必填字段 |
OP1003 | 参数不合法 | 按本页参数表核对 |
OP1009 | 权限不足 | 核对 token 与设备绑定/分享权限 |
OP1013 | 接口总次数超限 | 降低调用频率 |
OP1014 | 接口日限额超限 | 见 接口调用限额 |
DV1007 | 设备离线 | 等设备上线 |
更多见 错误码 · OP/SN/TK。
| 错误码 | 错误码说明 | 下一步 |
|---|---|---|
DV2003 | 设备未声明该属性 | 以 device.capability.list 为准 |
DV2004 | 写入值超出型号范围 | 核对 properties 取值 |
DV2007 | channelId 与 scope 不符 | 通道级必传,设备级不传 |
DV2008 | 同请求混用设备级与通道级 | 拆分请求 |
DV2009 | productId 与型号不一致 | 省略或改为实际型号 |
更多见 能力错误码。
