UNPKG

@fast-china/utils

Version:

Fast 工具库.

1 lines 9.36 kB
{"version":3,"file":"index.mjs","sources":["../../../../src/base64/index.ts"],"sourcesContent":["const b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nconst b64re = /^(?:[A-Z\\d+/]{4})*?(?:[A-Z\\d+/]{2}(?:==)?|[A-Z\\d+/]{3}=?)?$/i;\n\n/**加密字典 */\nconst base64PwdDic = [\n\t{ index: 977, randomIndex: 188 },\n\t{ index: 926, randomIndex: 201 },\n\t{ index: 851, randomIndex: 225 },\n\t{ index: 700, randomIndex: 255 },\n\t{ index: 600, randomIndex: 268 },\n\t{ index: 500, randomIndex: 277 },\n\t{ index: 400, randomIndex: 288 },\n\t{ index: 330, randomIndex: 327 },\n\t{ index: 300, randomIndex: 180 },\n\t{ index: 200, randomIndex: 178 },\n\t{ index: 100, randomIndex: 124 },\n\t// 100 以内字典\n\t{ index: 98, randomIndex: 95 },\n\t{ index: 92, randomIndex: 90 },\n\t{ index: 91, randomIndex: 87 },\n\t{ index: 88, randomIndex: 84 },\n\t{ index: 82, randomIndex: 79 },\n\t{ index: 78, randomIndex: 71 },\n\t{ index: 72, randomIndex: 69 },\n\t{ index: 68, randomIndex: 66 },\n\t{ index: 59, randomIndex: 55 },\n\t{ index: 48, randomIndex: 43 },\n\t{ index: 42, randomIndex: 37 },\n\t{ index: 36, randomIndex: 30 },\n\t{ index: 33, randomIndex: 27 },\n\t{ index: 24, randomIndex: 20 },\n\t{ index: 23, randomIndex: 18 },\n\t{ index: 21, randomIndex: 16 },\n\t{ index: 17, randomIndex: 14 },\n\t{ index: 13, randomIndex: 9 },\n\t{ index: 7, randomIndex: 4 },\n\t{ index: 5, randomIndex: 3 },\n\t{ index: 2, randomIndex: 1 },\n];\n\n/**随机字符串长度 */\nconst randomPrefixStrLength = 6;\n\n/**随机字符串 */\nconst randomStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\n\n/**\n * 在Base64字符串中添加加密字典\n */\nfunction insertRandomStrToBase64Str(base64Str: string): string {\n\tlet strResult = base64Str;\n\tconst items = base64PwdDic.sort((a, b) => {\n\t\treturn b.index - a.index;\n\t});\n\titems.forEach((item) => {\n\t\tif (item.index < base64Str.length) {\n\t\t\tconst randomChar = base64Str[item.randomIndex];\n\t\t\tstrResult = strResult.slice(0, item.index) + randomChar + strResult.slice(item.index);\n\t\t}\n\t});\n\treturn strResult;\n}\n\n/**\n * 删除Base64字符串中的加密字典\n */\nfunction removeBase64StrRandomStr(base64Str: string): string {\n\tconst items = base64PwdDic.sort((a, b) => {\n\t\treturn a.index - b.index;\n\t});\n\tlet strResult = base64Str;\n\titems.forEach((item) => {\n\t\tif (item.index < base64Str.length) {\n\t\t\tstrResult = strResult.slice(0, item.index) + strResult.slice(item.index + 1);\n\t\t}\n\t});\n\treturn strResult;\n}\n\n/**\n * 得到随机字符串\n */\nfunction getRandomStr(str = randomStr, prefixStrLength = randomPrefixStrLength): string {\n\tlet result = \"\";\n\tfor (let i = 0; i < prefixStrLength; i++) {\n\t\tconst randomInt = Math.ceil(Math.random() * (str.length - 1));\n\t\tconst randomChar = str[randomInt];\n\t\tresult += randomChar;\n\t}\n\treturn result;\n}\n\n/**\n * Base64工具类\n */\nexport const base64Util = {\n\t/**\n\t * 将字符串编码为Base64格式\n\t */\n\tbota(string: string): string {\n\t\tstring = String(string);\n\t\tlet bitmap,\n\t\t\ta,\n\t\t\tb,\n\t\t\tc,\n\t\t\tresult = \"\",\n\t\t\ti = 0,\n\t\t\t// eslint-disable-next-line prefer-const\n\t\t\trest = string.length % 3;\n\n\t\tfor (; i < string.length; ) {\n\t\t\tif ((a = string.charCodeAt(i++)) > 255 || (b = string.charCodeAt(i++)) > 255 || (c = string.charCodeAt(i++)) > 255)\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\t\"Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.\"\n\t\t\t\t);\n\n\t\t\tbitmap = (a << 16) | (b << 8) | c;\n\t\t\tresult += b64.charAt((bitmap >> 18) & 63) + b64.charAt((bitmap >> 12) & 63) + b64.charAt((bitmap >> 6) & 63) + b64.charAt(bitmap & 63);\n\t\t}\n\n\t\treturn rest ? result.slice(0, rest - 3) + \"===\".substring(rest) : result;\n\t},\n\t/**\n\t * 将Base64编码的字符串解码回其原始格式。\n\t */\n\tatob(string: string): string {\n\t\tstring = String(string).replace(/[\\t\\n\\f\\r ]+/g, \"\");\n\t\tif (!b64re.test(string)) throw new TypeError(\"Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.\");\n\t\tstring += \"==\".slice(2 - (string.length & 3));\n\t\tlet bitmap,\n\t\t\tresult = \"\",\n\t\t\tr1,\n\t\t\tr2,\n\t\t\ti = 0;\n\t\tfor (; i < string.length; ) {\n\t\t\tbitmap =\n\t\t\t\t(b64.indexOf(string.charAt(i++)) << 18) |\n\t\t\t\t(b64.indexOf(string.charAt(i++)) << 12) |\n\t\t\t\t((r1 = b64.indexOf(string.charAt(i++))) << 6) |\n\t\t\t\t(r2 = b64.indexOf(string.charAt(i++)));\n\n\t\t\tresult +=\n\t\t\t\tr1 === 64\n\t\t\t\t\t? String.fromCharCode((bitmap >> 16) & 255)\n\t\t\t\t\t: r2 === 64\n\t\t\t\t\t\t? String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255)\n\t\t\t\t\t\t: String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255, bitmap & 255);\n\t\t}\n\t\treturn result;\n\t},\n\t/**\n\t * 字符串ToBase64\n\t */\n\ttoBase64(str: string, prefixStrLength = randomPrefixStrLength): string {\n\t\tif (str.length === 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tconst randomPrefixStr = getRandomStr();\n\t\tlet base64 = base64Util.bota(encodeURIComponent(str));\n\t\tif (prefixStrLength !== 0) {\n\t\t\tbase64 = insertRandomStrToBase64Str(base64);\n\t\t}\n\t\treturn randomPrefixStr + base64;\n\t},\n\n\t/**\n\t * Base64转字符串\n\t */\n\tbase64ToStr(str: string, prefixStrLength = randomPrefixStrLength): string {\n\t\tlet result = str;\n\t\tif (str.length === 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\tlet input = str.slice(prefixStrLength);\n\t\tif (prefixStrLength !== 0) {\n\t\t\tinput = removeBase64StrRandomStr(input);\n\t\t}\n\t\tresult = base64Util.atob(input);\n\t\treturn decodeURIComponent(result);\n\t},\n};\n"],"names":["b64","b64re","base64PwdDic","index","randomIndex","base64Util","bota","string","bitmap","a","b","c","result","i","rest","String","length","charCodeAt","TypeError","charAt","slice","substring","atob","replace","test","r1","r2","indexOf","fromCharCode","toBase64","str","prefixStrLength","randomPrefixStr","Math","ceil","random","getRandomStr","base64","encodeURIComponent","base64Str","strResult","sort","forEach","item","randomChar","insertRandomStrToBase64Str","base64ToStr","input","items","removeBase64StrRandomStr","decodeURIComponent"],"mappings":"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"}