Authdog
  1. 加密和安全
Authdog
  • 常见问题
  • 使用说明
    • 功能介绍
    • 云函数篇
    • 销售代理
    • 部署教程
    • 更新Authdog教程
    • 更新日志
  • 用户模式
    • 用户注册
      POST
    • 用户登录
      POST
    • 修改密码
      POST
    • 解绑设备
      POST
    • 充值/激活
      POST
    • 心跳请求
      POST
    • 扣减点数
      POST
    • 退出登录
      POST
  • 设备ID模式
    • 设备授权
      POST
    • 充值/激活
      POST
    • 获取设备信息
      POST
    • 扣减点数
      POST
  • 云变量
    • 通过ID获取云变量
      POST
    • 通过名称获取云变量
      POST
  • 云函数
    • 通过ID运行云函数
      POST
    • 通过名称运行云函数
      POST
  • 用户数据
    • 创建用户数据
    • 通过唯一值获取数据
    • 通过名称获取数据列表
    • 获取用户数据列表
    • 删除用户数据
    • 修改用户数据
  • 用户资产明细
    • 获取用户资产明细
  • 其他接口
    • TCP接口
    • 获取应用信息
    • 提交用户反馈
  • 加密和安全
    • 通讯加密
    • 请求路径加密
    • 应用安全
  1. 加密和安全

通讯加密

authdog支持三种通讯加密方式 AES(弱安全)、RSA(高安全)、ECDH(极高安全),
💡
所有的API接口文档都是未开启通讯加密的情况下撰写,通讯加密会在其基础上进行一层加密,原有数据结构不会造成大的破坏。
AES加密算法为
aes-256-cbc iv 0000000000000000 autoPadding PKCS7
IV固定为字符串 0000000000000000
在线加密调试:https://the-x.cn/zh-cn/cryptography/Aes.aspx
RSA加密算法为
rsa-2048 RSA_PKCS1_PADDING
在线加密调试 http://tool.chacuo.net/cryptrsapubkey
ECDH
EC曲线类型 secp521r1

加密规则#

原请求体:
{
    "appid": 11,
    "data": {
        "baseBody": {
            "timestamp": 1680970400000,
            "clientVersion": "1.0",
            "deviceId": "fa6a91ef9baa242de0b354a212e8cf83",
            "osType": "android",
            "brand": "XIAOMI",
            "model": "MI13"
        }
    }
}
将data属性转换到字符串进行相应算法加密,然后将加密结果的base64编码字符串放入data中。
若是RSA或ECDH,则需要多一个key属性,详情往下看

AES加密模式#

原请求示例
{
    "appid": 11,
    "data": {
        "baseBody": {
            "timestamp": 1680970400000,
            "clientVersion": "1.0",
            "deviceId": "fa6a91ef9baa242de0b354a212e8cf83",
            "osType": "android",
            "brand": "XIAOMI",
            "model": "MI13"
        }
    }
}
AES加密后
{
    "appid": 11,
    "data": "C5litHrfp3oRTugxHGYBFomb0FuqRuT9/d9kRxe9TJrExT1QbyjdtYvZlUUOjkWJJA/nOKnKZOIiASf57BDe9uIAct+utdPv6a53KPu4WzV8HOqfMUClTgpS7+909/5rAzohm7LUBAG9edvMueCiZ38AF3UgneVzQuelE9X1A9veE4ISB+8W5NbKQhpjs5jiZku6og01J+FUfsMqj34BIVlTttJeTqjvftjwkBdlaHgpUTYEwYpvHiDdQ8tO+cy6jV1tRyKb59Yb7eEpTzviTdCkTouvrh5SxVPnbficVXfcLrX2DVtO8KLlltTUnAU4dFWjuuj6GzRSWjAfuvQXEO3GKwK1CjU0rtmKEg2zNapODSGJzUuZW+3TKp27QO5t"
}
响应
{
    "data": "fAUJh92SKMiSyVOkb0sOdKBw8JOSgsDbq6yLjzMkIhDlOmwlVf0Ms0AocFrza1FovQwnVexqIU1EdjjcGKgbYmjh+JK32h3efG5x8fjcYl+SJkBUMQVNUu2kNG7o9hb11L1CEk/vnHeqvUD3byQqU2oZxbZ6d9FJMQn0YDUlQnMNGaQO19hBeoUqkdD/Yh2ya421FXRXclbNwAkUOv6t0lAji/DPDPSywumZZq48KoGIvUnGxW00GawfobEsP/Kfz4FKMcKAZqF0p8npKFJXOCX+bVP9I9pDjrhi0oJ+yru/IhNl2FPzuqoCYwvST9pNAREmAaA1VF/dIkuol5sx8PXPjEEujshvpwhv0wgEUFuB1mhKDtc5zgXVL3+F1HJXGq34NToTHrk+xAo/AJjAAxF4+afc/q21I82zLGontemzXPk0ryl4obUvxS470bp/c8lbPb7NqmTzfaUvH2t6LRLbgRJEHBApK8/E6KGvPJzh08MxJjKAk+xpVAY8o2JQHTDe2mBMAy6pWxG8i53UlepVdqZL4Z1EXx6k329Nvb4ZM6OKSXZvy6mqOU3k3LiSvr/UAzv7JoEkwLTxgVPjz5IS661/EFXwAPmbzgszApA7liwp8miVIIiZKSjb75gbIF5lWnygHO/rv0kcik4PzlBjpT5Ps3Ss5YU48gHO48FuHSpCSl6ivlJZdu/faqHBBARxiFuVW848eO33jzmJXmo3Gv13lH+7h7ihO+/2xIU="
}
响应data解密结果
{
  "statusCode": 200,
  "message": "success",
  "data": {
    "device": {
      "id": 3,
      "createdAt": 1680941051183,
      "updatedAt": 1680948581000,
      "developerId": 3,
      "appid": 11,
      "deviceId": "fa6a91ef9baa242de0b354a212e8cf83",
      "otherInfo": "",
      "brand": "XIAOMI",
      "model": "MI13",
      "osType": "android",
      "status": "normal",
      "balance": 0,
      "expirationTime": 1684483486000,
      "trialExpiration": 1680941051000,
      "lastLoginTime": 1680941051000
    },
    "auth": {
      "result": true,
      "message": "",
      "expire": 1684483486000,
      "balance": 0,
      "isTryTime": false
    }
  },
  "timestamp": 1680970883755,
  "currentDeviceId": "fa6a91ef9baa242de0b354a212e8cf83"
}

RSA加密模式#

原请求示例
{
    "appid": 11,
    "data": {
        "baseBody": {
            "timestamp": 1680970400000,
            "clientVersion": "1.0",
            "deviceId": "fa6a91ef9baa242de0b354a212e8cf83",
            "osType": "android",
            "brand": "XIAOMI",
            "model": "MI13"
        }
    }
}
加密后
{
    "appid": 11,
    "data": "4+qkipgam9cQj7bJ+e4E9CKQUvMl/hbCx9jdfUOoAISCGlEOfqAYjdR38pvc2H3ZFzP7kKOdMWuNa/TRdn9cSiEfWegyB4Gf1gZ4cJ6Y02M3wW0dze6qA9ULfAIDSsFgICLQmQ7Hy4Ln1wedw1NlKyDIJA6nS/u6CSAoZOxL1qiBbMmLGYXIX1cer2dGmFPiG7yXNAQMDFqdaBUCe30jW7HJ/lt33GpyWr0Uv6t29heqhPt8gLaXR0FK6opLAAYYS3557sw7hWTwPxOQBmJ00GnyiNemWJAnMY/UasrwdPfwrdE7blsK8chjtAa2N3SWpkl45UYtXk8hT3fSUbeKeP+95BqRpyhOHTwbsnZXFGh+oXKZCWw+1KjclODrxCIw",
    "key": "PIL1DOVpXde9uX+1xXYDYAm3p/PImAt87x67UWcQWp7cpFkh+6fKLjg0P+s8T1YxuJ8a040UvMGmZK2yiXfdAv6ldqhnY27VEXlYB1pjFxEOtzDSLv9JitWPfrlEwM0aM0LhkkFbGWhn8HRq3A7Lp3ff1mhsUMe1GUkRHVTl9+ej9x5FKcHuPmbaNsV/9ZviSbRZy7V6TMOd4THIPUEKXUdAuZFHr4zXnLl9tFEg6azuH3plO4+iE4cOLKzFr8jvSFC6PzB9isF/kXIZMIMOcZPbk8hsOk9msphMaRkp15rS1/CGkGgxUS6jZ4aZUEaN/UHdTJkf2MFU5FfkZnWf9A=="
}
加密流程:
1.
首先先随机32位字符串作为AESkey
2.
使用上述AES加密算法加密data数据
3.
将得到的base64字符串放入data属性
4.
使用RSA公钥加密AES key
5.
将加密AES key的结果的base64放入key属性
返回同AES,使用AES密钥解密

ECDH加密模式#

原请求示例
{
    "appid": 11,
    "data": {
        "baseBody": {
            "timestamp": 1680970400000,
            "clientVersion": "1.0",
            "deviceId": "fa6a91ef9baa242de0b354a212e8cf83",
            "osType": "android",
            "brand": "XIAOMI",
            "model": "MI13"
        }
    }
}
加密后
{
    "appid": 11,
    "data": "Sy409vK49+Uiws18/5dHyCyR+eVPcbvTya/Kx9xhLoenM83Twc8v/WZ7HZu3KbXd7s7k3AdAhmWyUTqAJAt4T2cagpB1+SBbcYhxjTFCrK7xNcEJ0njbeH7SW81VxL8eDejQrkYInMF6Px2f9VRc7jPzYbmKrkRDSwmFEiv1qqCUpG5KNlqxo3K+lKPfdqZcAGwycRQUgcXhRiEYDd0zTjoqjC8cJm39qGsSG5jR+V0nrAdpm3l7yFoZGAMvadsApcB2Uyjj0I4X8ZJXvFL97IzMRLiI+noLaOuFXnv8L51uLWpX92JcHgl5WWk1nHP/VDJF3jJd01SagwN2j+4IVTK9KSOf2boI/80lqihr3lA3Uim/+UEww2zGl414O5J1",
    "key": "0400dfd31192e4827c76fda32ab3a12c41ac292379cc86fe39a6449c29f3c35f2071e6a1573f550ab3f3f72b286c03ef4ac561342908959ebe33d82a3e5ed73abef664013b37b6951b810982bd7b76bc6f1d5bddaac496595179a4bd04d037dd7d2d26cf64d90f3f7f12efd5c482b10ff1b6cb88d68c9d8df978446f4c0eadf0308d0904df"
}
加密流程:
1.
生成ECDH密钥对
2.
与应用提供的公钥协商密钥
3.
协商密钥结果计算sha1转为hex小写,并使用前32位作为AES密钥进行AES加密data内容
4.
加密结果base64放入data
5.
客户端生成ECDH公钥转为hex放入key
返回同AES,使用AES密钥解密
修改于 2023-04-13 08:33:54
上一页
提交用户反馈
下一页
请求路径加密
Built with