实现

请求接口:http://api.test.com/test?name=hello&home=world&work=java

客户端

  1. 生成当前时间戳timestamp=now和唯一随机字符串nonce=random
  2. 按照请求参数名的字母升序排列非空请求参数(包含AccessKey)
    stringA=”AccessKey=access&home=world&name=hello&work=java&timestamp=now&nonce=random”;
  3. 拼接密钥SecretKey
    stringSignTemp=”AccessKey=access&home=world&name=hello&work=java&timestamp=now&nonce=random&SecretKey=secret”;
  4. MD5并转换为大写
    sign=MD5(stringSignTemp).toUpperCase();
  5. 最终请求
    http://api.test.com/test?name=hello&home=world&work=java&timestamp=now&nonce=nonce&sign=sign;

    服务端

    timestamp 3分钟有效
    nonce 15分钟有效期,已经存在nonce,返回错误码
    image.png