外观
参数签名(sign)
317 字约 1 分钟
2025-01-13
生成规则
- 将参数按照键值排序,将排好序的字段用 - &拼接- key1=value&key2=value拼接。
- 拼接上 - 密钥(app_key)。形成:- key1=value&key2=valueapp_key
- md5加密得到最终结果: - sign
PHP
function generateSign($params, $appKey) {
  // 1. 将参数按照键值排序
  ksort($params);
  
  // 2. 拼接成 key=value&key=value 的形式
  $queryString = http_build_query($params);
  
  // 3. 拼接上密钥 (app_key)
  $queryString .= $appKey;
  
  // 4. 进行 md5 加密得到最终结果
  $sign = md5($queryString);
  
  return $sign;
}Lua
local function md5hex(input)
    local md5 = require("md5")
    return md5.sumhexa(input)
end
local function generateSign(params, appKey)
    -- 1. 将参数按照键值排序
    local sortedKeys = {}
    for key in pairs(params) do
        table.insert(sortedKeys, key)
    end
    table.sort(sortedKeys)
    -- 2. 拼接成 key=value&key=value 的形式
    local queryString = {}
    for _, key in ipairs(sortedKeys) do
        table.insert(queryString, key .. "=" .. params[key])
    end
    local joinedString = table.concat(queryString, "&")
    -- 3. 拼接上密钥 (app_key)
    joinedString = joinedString .. appKey
    -- 4. 进行 md5 加密得到最终结果
    local sign = md5hex(joinedString)
    return sign
endTypescript
function generateSign(params: Record<string, string>, appKey: string): string {
  // 1. 将参数按照键值排序
  const sortedKeys = Object.keys(params).sort();
  // 2. 拼接成 key=value&key=value 的形式
  const queryString = sortedKeys.map(key => `${key}=${params[key]}`).join('&');
  // 3. 拼接上密钥 (app_key)
  const stringToSign = queryString + appKey;
  // 4. 进行 md5 加密得到最终结果
  const sign = md5(stringToSign);
  return sign;
}