外观
参数签名(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
end
Typescript
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;
}