20 lines
577 B
JavaScript
20 lines
577 B
JavaScript
'use strict';
|
||
const crypto = require('crypto');
|
||
|
||
/** 空值不参与,字典序,MD5 小写 */
|
||
function buildSign(params, secretKey) {
|
||
const keys = Object.keys(params).filter((k) => k !== 'Sign').sort();
|
||
const parts = [];
|
||
for (const k of keys) {
|
||
const v = params[k];
|
||
if (v === null || v === undefined) continue;
|
||
const s = String(v);
|
||
if (s === '') continue;
|
||
parts.push(`${k}=${s}`);
|
||
}
|
||
const raw = parts.join('&') + `&SecretKey=${secretKey}`;
|
||
return crypto.createHash('md5').update(raw, 'utf8').digest('hex');
|
||
}
|
||
|
||
module.exports = { buildSign };
|