喵咕网络验证
    喵咕网络验证
    • 接口文档
    • 普通请求
    • 加密请求
    • 云函数使用文档
    • CLI使用文档
    • 接口管理-接口拓展
    • 单码接口
      • 获取单码信息接口
        GET
      • 单码以卡充卡
        GET
      • 单码登出
        GET
      • 单码心跳接口
        GET
      • 单码登录
        GET
      • 单码解绑
        GET
    • 会员接口
      • 用户登录
        GET
      • 获取会员信息(已登录)
        GET
      • 用户注册
        GET
      • 用户登出
        GET
      • 用户心跳
        GET
      • 获取会员信息(未登录)
        GET
      • 用户解绑
        GET
      • 用户充值
        GET
      • 修改密码(已登录)
        GET
      • 修改密码(未登录)
        GET
      • 修改昵称
        GET
      • 查询工单类型
        GET
      • 添加新的反馈主题
        GET
      • 获取已登录用户的所有反馈主题
        GET
      • 获取反馈主题下的聊天记录
        GET
      • 发送聊天消息
        GET
    • 通用接口
      • 获取程序变量
      • 获取应用免费状态
      • 获取程序版本列表
      • 获取最新版本
      • 云函数
      • 设置私有数据
      • 获取私有数据
    • MGALV2
      • MGALV2介绍
      • MGALV2-各种加密方式
      • MGALV2-VPN代理检测
      • MGALV2-随机数与机器码
      • MGALV2-程序变量获取
      • MGALV2-版本更新检测
      • MGALV2-单码登录
      • MGALV2-单码解绑
      • MGALV2-单码心跳
      • MGALV2-MGUI
      • MGALV2-实战演示
    • 文档
      • 接口文档
      • 云函数最佳使用
      • CLI使用教程
      • 普通请求
      • 加密请求
      • 接口管理-接口拓展
      • 常见问题
        • 通用解答
        • 功能答疑

    加密请求

    前言#

    在查阅加密对接前,您应该已经熟悉普通对接,且可以完成接口对接
    您应当对以下知识有基本概念
    加密算法
    保护数据安全,通过将明文转为字节码,通过算法对字节码进行偏移和计算变为新的字节码组
    编码
    将加密后的字节码组通过16进制等编码方式重新编码为字符串
    数字签名
    数字签名是利用签名摘要算法(MD5、SHA1、SHA256等)不可逆算法,将字符串计算为一串定长的新字符串,且不同的字符串计算出来的新字符串一定不同(排除哈希碰撞)

    加密规则配置#

    接下来我们将带您完整的利用接口安全进行一个接口的加密演示
    本文将不涉及代码,由JSON的格式向您直观的查看加密流程
    假设后台配置的加密方式为
    加密方式:AES加密
    加密编码方式:16进制编码
    请求加密方式:全部加密
    响应加密方式:全部加密
    随机数防劫持:开
    签名方式:MD5
    服务端签名验证时间差:5000
    签名计算规则:方式二
    全局TOKEN验证:关
    全局机器码验证:关

    假定我们要请求单码登录接口#

    1、获取公共参数#

    {
      "appId": 1,
      "timestamp": "1712386078465",
      "safeCode": "8731897398274"
    }
    以上参数中
    appId为您的应用编号
    timestamp为当前时间的时间戳(13位)
    safeCode位您生成的随机数

    2、拼接专属参数#

    通过查看接口文档
    接口列表 -> 单码登录接口后的查看按钮 -> 请求参数
    可知专属参数为card
    将card拼接到上述的公共参数中
    变为
    {
      "appId": 1,
      "timestamp": "1712386078465",
      "safeCode": "8731897398274",
      "card": "此处是用户输入的单码"
    }

    3、对请求参数签名#

    您需要根据您的签名规则来计算签名
    方式一:当前时间戳+APP密钥
    即 上面json中的 1712386078465ZVNH8HUW5K3VQZKK(从后台获取)注意,此处的 ZVNH8HUW5K3VQZKK 为APP密钥
    方式二:字典排序法
    首先将json变为get请求的参数拼接方式即
    appId=1&timestamp=1712386078465&safeCode=8731897398274&card=此处是用户输入的单码
    去除appId 即变为
    timestamp=1712386078465&safeCode=8731897398274&card=此处是用户输入的单码
    然后使用字典排序法即 将参数对 a-z 的方式改变顺序
    card=此处是用户输入的单码&safeCode=8731897398274&timestamp=1712386078465
    获取到将被签名的字符串后根据您选定的签名摘要算法(MD5、SHA1、SHA256)对其进行签名计算得到新的字符串 aklwhdpia567whfpaow475hf7978ahjl

    4、组装签名#

    在上一步中已经计算出了签名 aklwhdpia567whfpaow475hf7978ahjl 即为签名值,将其拼接在 signature 后
    原本的json
    {
      "appId": 1,
      "timestamp": "1712386078465",
      "safeCode": "8731897398274",
      "card": "此处是用户输入的单码"
    }
    将签名拼接进去变为
    {
      "appId": 1,
      "timestamp": "1712386078465",
      "safeCode": "8731897398274",
      "card": "此处是用户输入的单码",
      "signature": "aklwhdpia567whfpaow475hf7978ahjl"
    }

    5、整体加密#

    将上一步骤中得到的json 提取出appId 即 将原本的json变为
    {
      "timestamp": "1712386078465",
      "safeCode": "8731897398274",
      "card": "此处是用户输入的单码",
      "signature": "aklwhdpia567whfpaow475hf7978ahjl"
    }
    接下来将这个json继续拼接为get请求参数拼接的方式即变为(无需排序),下方将代码换行方便教程展示,实际上并没有换行
    timestamp=1712386078465&
    safeCode=8731897398274&
    card=此处是用户输入的单码&
    signature=aklwhdpia567whfpaow475hf7978ahjl
    将上述字符串使用您选定的加密算法加密变为
    78091768932852983659726350982175982635832gy5f2u3528375892375982365798235ft32d5g23d5uy2f35ui
    至此加密完毕

    最后一步,拼接请求参数#

    构建一个新的json,将第五步中提取出的appId放入变为
    {
      "appId": "1"
    }
    再将第五步中加密完成后的字符串拼接在params后放在json中,则json变为
    {
      "appId": "1",
      "params": "78091768932852983659726350982175982635832gy5f2u3528375892375982365798235ft32d5g23d5uy2f35ui"
    }
    修改于 2024-05-02 04:17:50
    上一页
    普通请求
    下一页
    云函数使用文档
    Built with