196 lines
6.3 KiB
JavaScript
196 lines
6.3 KiB
JavaScript
var __create = Object.create;
|
|
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __getProtoOf = Object.getPrototypeOf;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __export = (target, all) => {
|
|
for (var name in all)
|
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
};
|
|
var __copyProps = (to, from, except, desc) => {
|
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
for (let key of __getOwnPropNames(from))
|
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
}
|
|
return to;
|
|
};
|
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
// If the importer is in node compatibility mode or this is not an ESM
|
|
// file that has been converted to a CommonJS file using a Babel-
|
|
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
mod
|
|
));
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
|
|
// src/utils/security.util.ts
|
|
var security_util_exports = {};
|
|
__export(security_util_exports, {
|
|
aesDecrypt: () => aesDecrypt,
|
|
aesEncrypt: () => aesEncrypt,
|
|
checkSign: () => checkSign,
|
|
createSign: () => createSign,
|
|
genRandomString: () => genRandomString,
|
|
hmac: () => hmac,
|
|
hmacSha256: () => hmacSha256,
|
|
md5: () => md5,
|
|
randomWithProb: () => randomWithProb,
|
|
sha1: () => sha1,
|
|
sha3_256: () => sha3_256,
|
|
sha512: () => sha512,
|
|
shortUuid: () => shortUuid,
|
|
uuid: () => uuid
|
|
});
|
|
module.exports = __toCommonJS(security_util_exports);
|
|
var import_crypto = __toESM(require("crypto"), 1);
|
|
var import_crypto_js = __toESM(require("crypto-js"), 1);
|
|
|
|
// src/utils/string.util.ts
|
|
var reNormalUUID = /^[0-9a-fA-F-]{36}$/;
|
|
var reLongUUID = /^[0-9a-fA-F]{32}$/;
|
|
var n = /-/g;
|
|
function compressUuid(e, t = false) {
|
|
if (reNormalUUID.test(e)) {
|
|
e = e.replace(n, "");
|
|
} else if (!reLongUUID.test(e)) {
|
|
return e;
|
|
}
|
|
var r = true === t ? 2 : 5;
|
|
return compressHex(e, r);
|
|
}
|
|
var CHARS_BASE64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
function compressHex(e, r) {
|
|
var i, n2 = e.length;
|
|
i = void 0 !== r ? r : n2 % 3;
|
|
for (var s = e.slice(0, i), o = []; i < n2; ) {
|
|
var u = parseInt(e[i], 16), a = parseInt(e[i + 1], 16), c = parseInt(e[i + 2], 16);
|
|
o.push(CHARS_BASE64[u << 2 | a >> 2]);
|
|
o.push(CHARS_BASE64[(3 & a) << 4 | c]);
|
|
i += 3;
|
|
}
|
|
return s + o.join("");
|
|
}
|
|
|
|
// src/utils/security.util.ts
|
|
function genRandomString(length) {
|
|
return import_crypto.default.randomBytes(Math.ceil(length / 2)).toString("hex").slice(0, length);
|
|
}
|
|
function randomWithProb(prob_array) {
|
|
let total = 0;
|
|
for (let _d of prob_array) {
|
|
total += _d;
|
|
}
|
|
prob_array = prob_array.map((o) => o / total);
|
|
let r = Math.random();
|
|
let s = prob_array.map((v, index) => {
|
|
return { index, prob: v };
|
|
}).sort((a, b) => a.prob - b.prob);
|
|
let result = s.find((v) => (r -= v.prob) <= 0);
|
|
return result ? result.index : s.length - 1;
|
|
}
|
|
function uuid() {
|
|
return import_crypto.default.randomUUID();
|
|
}
|
|
function shortUuid() {
|
|
let uid = uuid();
|
|
return compressUuid(uid);
|
|
}
|
|
function hmac(input, key, out) {
|
|
return out ? import_crypto.default.createHmac("sha1", key).update(input).digest(out) : import_crypto.default.createHmac("sha1", key).update(input).digest("hex");
|
|
}
|
|
function md5(str) {
|
|
const md5sum = import_crypto.default.createHash("md5");
|
|
md5sum.update(str);
|
|
str = md5sum.digest("hex");
|
|
return str;
|
|
}
|
|
function sha1(str) {
|
|
const md5sum = import_crypto.default.createHash("sha1");
|
|
md5sum.update(str);
|
|
str = md5sum.digest("hex");
|
|
return str;
|
|
}
|
|
function sha512(password, salt) {
|
|
let hash = import_crypto.default.createHmac("sha512", salt);
|
|
hash.update(password);
|
|
let value = hash.digest("hex");
|
|
return {
|
|
salt,
|
|
passwordHash: value
|
|
};
|
|
}
|
|
function sha3_256(str) {
|
|
let hash = import_crypto.default.createHash("sha3-256");
|
|
hash.update(str);
|
|
return hash.digest("hex");
|
|
}
|
|
function hmacSha256(str, key) {
|
|
const md5sum = import_crypto.default.createHmac("sha256", key);
|
|
md5sum.update(str);
|
|
const data = md5sum.digest("hex");
|
|
console.log(`HmacSHA256 rawContent is [${str}], key is [${key}], hash result is [${data}]`);
|
|
return data;
|
|
}
|
|
var aesEncrypt = (plaintText, key) => {
|
|
key = import_crypto_js.default.SHA1(key).toString().substring(0, 16);
|
|
key = import_crypto_js.default.enc.Base64.parse(key);
|
|
let encryptedData = import_crypto_js.default.AES.encrypt(plaintText, key, {
|
|
mode: import_crypto_js.default.mode.ECB,
|
|
padding: import_crypto_js.default.pad.Pkcs7
|
|
});
|
|
return encryptedData.toString(import_crypto_js.default.format.Hex);
|
|
};
|
|
var aesDecrypt = (encryptedDataHexStr, key) => {
|
|
key = import_crypto_js.default.SHA1(key).toString().substring(0, 16);
|
|
key = import_crypto_js.default.enc.Base64.parse(key);
|
|
let encryptedHex = import_crypto_js.default.enc.Hex.parse(encryptedDataHexStr);
|
|
let encryptedBase64 = import_crypto_js.default.enc.Base64.stringify(encryptedHex);
|
|
var decryptedData = import_crypto_js.default.AES.decrypt(encryptedBase64, key, {
|
|
mode: import_crypto_js.default.mode.ECB,
|
|
padding: import_crypto_js.default.pad.Pkcs7
|
|
});
|
|
return decryptedData.toString(import_crypto_js.default.enc.Utf8);
|
|
};
|
|
function createSign(secretKey, paramStr, timestamp) {
|
|
paramStr = `${paramStr}:${timestamp}:${secretKey}`;
|
|
return sha1(paramStr);
|
|
}
|
|
function checkSign({
|
|
secretKey,
|
|
data,
|
|
sign,
|
|
signKeys
|
|
}) {
|
|
signKeys.sort();
|
|
let signStr = "";
|
|
for (let key of signKeys) {
|
|
if (signStr.length > 0) {
|
|
signStr += "&";
|
|
}
|
|
signStr += `${key}=${data[key]}`;
|
|
}
|
|
console.log(signStr);
|
|
let sign1 = hmacSha256(signStr, secretKey);
|
|
return sign1 === sign;
|
|
}
|
|
// Annotate the CommonJS export names for ESM import in node:
|
|
0 && (module.exports = {
|
|
aesDecrypt,
|
|
aesEncrypt,
|
|
checkSign,
|
|
createSign,
|
|
genRandomString,
|
|
hmac,
|
|
hmacSha256,
|
|
md5,
|
|
randomWithProb,
|
|
sha1,
|
|
sha3_256,
|
|
sha512,
|
|
shortUuid,
|
|
uuid
|
|
});
|
|
//# sourceMappingURL=security.util.cjs.map
|