1 line
7.2 KiB
Plaintext
1 line
7.2 KiB
Plaintext
{"version":3,"sources":["../../src/utils/security.util.ts"],"sourcesContent":["import crypto from 'crypto'\nimport CryptoJS from 'crypto-js'\n\nexport function hmac(input, key, out) {\n return out\n ? crypto.createHmac('sha1', key).update(input).digest(out)\n : crypto.createHmac('sha1', key).update(input).digest('hex')\n}\n\nexport function genRandomString(length) {\n return crypto\n .randomBytes(Math.ceil(length / 2))\n .toString('hex')\n .slice(0, length)\n}\n\nexport function sha512(password: string, salt: string) {\n let hash = crypto.createHmac('sha512', salt)\n hash.update(password)\n let value = hash.digest('hex')\n return {\n salt: salt,\n passwordHash: value,\n }\n}\n\nexport function sha1(str: string) {\n const md5sum = crypto.createHash('sha1')\n md5sum.update(str)\n str = md5sum.digest('hex')\n return str\n}\n\nexport function hmacSha256(str: string, key: any) {\n const md5sum = crypto.createHmac('sha256', key)\n md5sum.update(str)\n const data = md5sum.digest('hex')\n console.log(`HmacSHA256 rawContent is [${str}], key is [${key}], hash result is [${data}]`)\n return data\n}\n\nexport function md5(str: string) {\n const md5sum = crypto.createHash('md5')\n md5sum.update(str)\n str = md5sum.digest('hex')\n return str\n}\n\nexport function createSign(secretKey: string, paramStr: string, timestamp: number) {\n paramStr = `${paramStr}:${timestamp}:${secretKey}`\n return sha1(paramStr)\n}\n\nexport function checkSign({\n secretKey,\n data,\n sign,\n signKeys,\n}: {\n secretKey: string\n data: {}\n sign: string\n signKeys: string[]\n}) {\n signKeys.sort()\n let signStr = ''\n for (let key of signKeys) {\n if (signStr.length > 0) {\n signStr += '&'\n }\n signStr += `${key}=${data[key]}`\n }\n console.log(signStr)\n let sign1 = hmacSha256(signStr, secretKey)\n return sign1 === sign\n}\n\n// export function aesDecrypt(encrypted: string, key: string) {\n// let bytes = aes.decrypt(encrypted, key)\n// var originalText = bytes.toString(enc.Utf8);\n// return originalText\n// }\n\nexport const aesEncrypt = (plaintText, key) => {\n key = CryptoJS.SHA1(key).toString().substring(0, 16)\n key = CryptoJS.enc.Base64.parse(key)\n let encryptedData = CryptoJS.AES.encrypt(plaintText, key, {\n mode: CryptoJS.mode.ECB,\n padding: CryptoJS.pad.Pkcs7,\n })\n\n return encryptedData.toString(CryptoJS.format.Hex)\n}\n\nexport const aesDecrypt = (encryptedDataHexStr, key) => {\n key = CryptoJS.SHA1(key).toString().substring(0, 16)\n key = CryptoJS.enc.Base64.parse(key)\n let encryptedHex = CryptoJS.enc.Hex.parse(encryptedDataHexStr)\n let encryptedBase64 = CryptoJS.enc.Base64.stringify(encryptedHex)\n\n var decryptedData = CryptoJS.AES.decrypt(encryptedBase64, key, {\n mode: CryptoJS.mode.ECB,\n padding: CryptoJS.pad.Pkcs7,\n })\n\n return decryptedData.toString(CryptoJS.enc.Utf8)\n}\n\nconst base58Alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nexport const hexToBase58 = (hexString: string) => {\n const bytes = hexString.match(/.{1,2}/g).map(byte => parseInt(byte, 16))\n let base58String = ''\n\n let num = BigInt('0x' + hexString)\n while (num > BigInt(0)) {\n const remainder = num % BigInt(58)\n num = num / BigInt(58)\n base58String = base58Alphabet[Number(remainder)] + base58String\n }\n\n return base58String\n}\n\nexport const base58ToHex = (base58String: string) => {\n const base58Length = base58String.length\n let num = BigInt(0)\n let leadingZeros = 0\n for (let i = 0; i < base58Length; i++) {\n const charIndex = base58Alphabet.indexOf(base58String[i])\n if (charIndex === -1) {\n throw new Error('Invalid Base58 string')\n }\n\n num = num * BigInt(58) + BigInt(charIndex)\n }\n return num.toString(16)\n}\n\nexport const hexToBase32 = (hexString: string) => {\n const bytes = hexString.match(/.{1,2}/g).map(byte => parseInt(byte, 16))\n const base32Alphabet = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'\n let base32String = ''\n\n let num = BigInt('0x' + hexString)\n while (num > BigInt(0)) {\n const remainder = num % BigInt(32)\n num = num / BigInt(32)\n base32String = base32Alphabet[Number(remainder)] + base32String\n }\n\n return base32String\n}\n"],"mappings":"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","names":["crypto","CryptoJS"]} |