UNPKG

@fast-china/utils

Version:

Fast 工具库.

1 lines 4.62 kB
{"version":3,"file":"index.mjs","sources":["../../../../src/crypto/index.ts"],"sourcesContent":["import { AES, MD5, SHA1, enc, mode } from \"crypto-js\";\nimport { consoleError } from \"../console\";\n\n/**\n * 加密解密\n */\nexport const cryptoUtil = {\n\t/**\n\t * AES\n\t */\n\taes: {\n\t\t/**\n\t\t * AES加密\n\t\t * @param dataStr 要加密的字符串\n\t\t * @param key 用于加密的密钥\n\t\t * @param vector 用于加密的向量(IV)\n\t\t * @param cipherMode 加密模式,默认为CBC模式\n\t\t */\n\t\tencrypt(dataStr: string, key: string, vector: string, cipherMode: any = mode.CBC): string {\n\t\t\tif (!dataStr) {\n\t\t\t\treturn dataStr;\n\t\t\t}\n\n\t\t\t// 处理Key不足32位的问题\n\t\t\tif (key.length < 32) {\n\t\t\t\t// 不足\n\t\t\t\tkey = key.padEnd(32, \"f\");\n\t\t\t}\n\n\t\t\t// 处理Key超过32位的问题\n\t\t\tif (key.length > 32) {\n\t\t\t\t// 超过\n\t\t\t\tkey = key.substring(0, 32);\n\t\t\t}\n\n\t\t\t// 处理IV不足16位的问题\n\t\t\tif (vector.length < 16) {\n\t\t\t\t// 不足\n\t\t\t\tvector = vector.padEnd(16, \"f\");\n\t\t\t}\n\n\t\t\t// 处理IV超过16位的问题\n\t\t\tif (vector.length > 16) {\n\t\t\t\t// 超过\n\t\t\t\tvector = vector.substring(0, 16);\n\t\t\t}\n\n\t\t\treturn AES.encrypt(dataStr, enc.Utf8.parse(key), {\n\t\t\t\tiv: enc.Utf8.parse(vector),\n\t\t\t\tmode: cipherMode,\n\t\t\t}).toString();\n\t\t},\n\t\t/**\n\t\t * AES解密\n\t\t * @param dataStr 要解密的Base64编码字符串\n\t\t * @param key 用于解密的密钥\n\t\t * @param vector 用于解密的向量(IV)\n\t\t * @param cipherMode 解密模式,默认为CBC模式\n\t\t */\n\t\tdecrypt<T = string>(dataStr: string, key: string, vector: string, cipherMode: any = mode.CBC): T | null {\n\t\t\tif (!dataStr) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// 处理Key不足32位的问题\n\t\t\tif (key.length < 32) {\n\t\t\t\t// 不足\n\t\t\t\tkey = key.padEnd(32, \"f\");\n\t\t\t}\n\n\t\t\t// 处理Key超过32位的问题\n\t\t\tif (key.length > 32) {\n\t\t\t\t// 超过\n\t\t\t\tkey = key.substring(0, 32);\n\t\t\t}\n\n\t\t\t// 处理IV不足16位的问题\n\t\t\tif (vector.length < 16) {\n\t\t\t\t// 不足\n\t\t\t\tvector = vector.padEnd(16, \"f\");\n\t\t\t}\n\n\t\t\t// 处理IV超过16位的问题\n\t\t\tif (vector.length > 16) {\n\t\t\t\t// 超过\n\t\t\t\tvector = vector.substring(0, 16);\n\t\t\t}\n\n\t\t\tconst resAESData = AES.decrypt(dataStr, enc.Utf8.parse(key), {\n\t\t\t\tiv: enc.Utf8.parse(vector),\n\t\t\t\tmode: cipherMode,\n\t\t\t});\n\t\t\ttry {\n\t\t\t\tconst result = resAESData.toString(enc.Utf8);\n\t\t\t\treturn JSON.parse(result) as T;\n\t\t\t} catch (error) {\n\t\t\t\tconsoleError(\"AESCrypto\", error);\n\t\t\t\treturn null;\n\t\t\t}\n\t\t},\n\t},\n\t/**\n\t * SHA1\n\t */\n\tsha1: {\n\t\t/**\n\t\t * SHA1加密\n\t\t * @param dataStr 要加密的字符串\n\t\t */\n\t\tencrypt(dataStr: string): string {\n\t\t\tif (!dataStr) {\n\t\t\t\treturn dataStr;\n\t\t\t}\n\n\t\t\treturn SHA1(dataStr).toString(enc.Hex).toUpperCase();\n\t\t},\n\t},\n\t/**\n\t * MD5\n\t */\n\tMD5: {\n\t\t/**\n\t\t * MD5加密\n\t\t * @param dataStr 要加密的字符串\n\t\t */\n\t\tencrypt(dataStr: string): string {\n\t\t\tif (!dataStr) {\n\t\t\t\treturn dataStr;\n\t\t\t}\n\n\t\t\treturn MD5(dataStr).toString(enc.Hex).toUpperCase();\n\t\t},\n\t},\n};\n"],"names":["cryptoUtil","aes","encrypt","dataStr","key","vector","cipherMode","mode","CBC","length","padEnd","substring","AES","enc","Utf8","parse","iv","toString","decrypt","resAESData","result","JSON","error","consoleError","sha1","SHA1","Hex","toUpperCase","MD5"],"mappings":"0HAMO,MAAMA,EAAa,CAIzBC,IAAK,CAQJC,SAAQC,EAAiBC,EAAaC,EAAgBC,EAAkBC,EAAKC,MACvEL,GAKDC,EAAIK,OAAS,KAEhBL,EAAMA,EAAIM,OAAO,GAAI,MAIlBN,EAAIK,OAAS,KAEhBL,EAAMA,EAAIO,UAAU,EAAG,KAIpBN,EAAOI,OAAS,KAEnBJ,EAASA,EAAOK,OAAO,GAAI,MAIxBL,EAAOI,OAAS,KAEnBJ,EAASA,EAAOM,UAAU,EAAG,KAGvBC,EAAIV,QAAQC,EAASU,EAAIC,KAAKC,MAAMX,GAAM,CAChDY,GAAIH,EAAIC,KAAKC,MAAMV,GACnBE,KAAMD,IACJW,YA9BKd,EAuCT,OAAAe,CAAoBf,EAAiBC,EAAaC,EAAgBC,EAAkBC,EAAKC,KACxF,IAAKL,EACJ,OAAO,KAIJC,EAAIK,OAAS,KAEhBL,EAAMA,EAAIM,OAAO,GAAI,MAIlBN,EAAIK,OAAS,KAEhBL,EAAMA,EAAIO,UAAU,EAAG,KAIpBN,EAAOI,OAAS,KAEnBJ,EAASA,EAAOK,OAAO,GAAI,MAIxBL,EAAOI,OAAS,KAEnBJ,EAASA,EAAOM,UAAU,EAAG,KAG9B,MAAMQ,EAAaP,EAAIM,QAAQf,EAASU,EAAIC,KAAKC,MAAMX,GAAM,CAC5DY,GAAIH,EAAIC,KAAKC,MAAMV,GACnBE,KAAMD,IAEP,IACC,MAAMc,EAASD,EAAWF,SAASJ,EAAIC,MACvC,OAAOO,KAAKN,MAAMK,EACnB,OAASE,GAER,OADAC,EAAa,YAAaD,GACnB,IACR,CACD,GAKDE,KAAM,CAKLtB,QAAQC,GACFA,EAIEsB,EAAKtB,GAASc,SAASJ,EAAIa,KAAKC,cAH/BxB,GASVyB,IAAK,CAKJ1B,QAAQC,GACFA,EAIEyB,EAAIzB,GAASc,SAASJ,EAAIa,KAAKC,cAH9BxB"}