51 lines
1.3 KiB
JavaScript
51 lines
1.3 KiB
JavaScript
|
import crypto from 'crypto-js';
|
|||
|
let coyr = 'coyrOrtiehanhan1223202409111457';
|
|||
|
// 生成 nonce(随机生成一个16位的字符串)
|
|||
|
function generateNonce() {
|
|||
|
const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
|||
|
let nonce = '';
|
|||
|
for (let i = 0; i < 16; i++) {
|
|||
|
nonce += chars.charAt(Math.floor(Math.random() * chars.length));
|
|||
|
}
|
|||
|
return nonce;
|
|||
|
}
|
|||
|
// 生成当前时间戳(格式为 yyyyMMddHHmmss)
|
|||
|
function generateTimestamp() {
|
|||
|
return new Date().getTime();
|
|||
|
}
|
|||
|
// 生成 MD5 哈希(需要引入第三方库,如 crypto-js)
|
|||
|
function md5Hash(str) {
|
|||
|
return crypto.MD5(str).toString();
|
|||
|
}
|
|||
|
|
|||
|
// 生成 SHA-256 哈希(需要引入第三方库,如 crypto-js)
|
|||
|
function sha256Hash(str) {
|
|||
|
return crypto.SHA256(str).toString();
|
|||
|
}
|
|||
|
// 生成签名
|
|||
|
function generateSignature(params, timestamp, nonce) {
|
|||
|
// 加密
|
|||
|
let coyr1 = md5Hash(coyr);
|
|||
|
// 拼接时间戳、nonce 和 secretKey
|
|||
|
let signStr = coyr1 + timestamp + nonce;
|
|||
|
// MD5 加密
|
|||
|
const md5Str = md5Hash(signStr);
|
|||
|
// SHA-256 加密
|
|||
|
let aaaa = sha256Hash(md5Str);
|
|||
|
return aaaa;
|
|||
|
}
|
|||
|
function sign(data) {
|
|||
|
// 生成签名
|
|||
|
const timestamp = generateTimestamp();
|
|||
|
const nonce = generateNonce();
|
|||
|
const sign = generateSignature(data, timestamp, nonce);
|
|||
|
return {
|
|||
|
timestamp,
|
|||
|
nonce,
|
|||
|
sign,
|
|||
|
};
|
|||
|
}
|
|||
|
// 封装
|
|||
|
|
|||
|
export default sign;
|