zutils/dist/utils/security.util.cjs
2024-01-17 15:16:12 +08:00

178 lines
6.1 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,
base58ToHex: () => base58ToHex,
checkSign: () => checkSign,
createSign: () => createSign,
genRandomString: () => genRandomString,
hexToBase32: () => hexToBase32,
hexToBase58: () => hexToBase58,
hmac: () => hmac,
hmacSha256: () => hmacSha256,
md5: () => md5,
sha1: () => sha1,
sha512: () => sha512
});
module.exports = __toCommonJS(security_util_exports);
var import_crypto = __toESM(require("crypto"), 1);
var import_crypto_js = __toESM(require("crypto-js"), 1);
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 genRandomString(length) {
return import_crypto.default.randomBytes(Math.ceil(length / 2)).toString("hex").slice(0, length);
}
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 sha1(str) {
const md5sum = import_crypto.default.createHash("sha1");
md5sum.update(str);
str = md5sum.digest("hex");
return str;
}
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;
}
function md5(str) {
const md5sum = import_crypto.default.createHash("md5");
md5sum.update(str);
str = md5sum.digest("hex");
return str;
}
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;
}
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);
};
var base58Alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
var hexToBase58 = (hexString) => {
const bytes = hexString.match(/.{1,2}/g).map((byte) => parseInt(byte, 16));
let base58String = "";
let num = BigInt("0x" + hexString);
while (num > BigInt(0)) {
const remainder = num % BigInt(58);
num = num / BigInt(58);
base58String = base58Alphabet[Number(remainder)] + base58String;
}
return base58String;
};
var base58ToHex = (base58String) => {
const base58Length = base58String.length;
let num = BigInt(0);
let leadingZeros = 0;
for (let i = 0; i < base58Length; i++) {
const charIndex = base58Alphabet.indexOf(base58String[i]);
if (charIndex === -1) {
throw new Error("Invalid Base58 string");
}
num = num * BigInt(58) + BigInt(charIndex);
}
return num.toString(16);
};
var hexToBase32 = (hexString) => {
const bytes = hexString.match(/.{1,2}/g).map((byte) => parseInt(byte, 16));
const base32Alphabet = "qpzry9x8gf2tvdw0s3jn54khce6mua7l";
let base32String = "";
let num = BigInt("0x" + hexString);
while (num > BigInt(0)) {
const remainder = num % BigInt(32);
num = num / BigInt(32);
base32String = base32Alphabet[Number(remainder)] + base32String;
}
return base32String;
};
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
aesDecrypt,
aesEncrypt,
base58ToHex,
checkSign,
createSign,
genRandomString,
hexToBase32,
hexToBase58,
hmac,
hmacSha256,
md5,
sha1,
sha512
});
//# sourceMappingURL=security.util.cjs.map