UNPKG

easy-api-client

Version:

开源项目服务端api框架easy-spring-boot-api的typescript客户端api对接工具包

98 lines (97 loc) 3.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EncryptUtil = void 0; var ApiClient_1 = require("../api/ApiClient"); var EncryptUtil = /** @class */ (function () { function EncryptUtil() { } EncryptUtil.sortAndMontage = function (data) { var result = ''; var keys = Object.keys(data); var params = {}; //转换字段 keys.forEach(function (key) { if (data[key] === undefined || data[key] === null || data[key] instanceof Array) { return; } params[key] = data[key]; }); keys = Object.keys(params); keys = keys.sort(); //对键值对进行拼接 keys.forEach(function (key) { result += key; var content = String(params[key]); result += content; }); //console.log(result); return result; }; EncryptUtil.signSHA1Hex = function (data, timestamp, secret) { var str = this.sortAndMontage(data); if (ApiClient_1.CurrentLoginUserInfo.enableLog) { console.log("sortedParamsResult:".concat(str)); } var salt = String(timestamp); var txt = secret + salt + str + salt + secret; //console.log(`content: ${txt}`); try { return this.Sha1(txt).toString(this.EncodeHex).toUpperCase(); } catch (e) { console.error(e); } return ''; }; EncryptUtil.signMD5Hex = function (value, secret) { try { return this.MD5(value + secret).toString(this.EncodeHex).toUpperCase(); } catch (e) { console.error(e); } return ''; }; EncryptUtil.encrypt = function (data, secret) { var formatedKey = this.EncodeUtf8.parse(secret); // 将 key 转为 128bit 格式 var formatedData = this.EncodeUtf8.parse(data); // 将 data 转为 utf8 编码格式 var encrypted = this.AES.encrypt(formatedData, formatedKey, { 'mode': this.Ecb, 'padding': this.Pkcs7 }); // 加密 return encrypted.toString(); // AES 加密生成的密文是一个对象,直接将其转为字符串是一个 Base64 编码串 }; EncryptUtil.decrypt = function (encryptData, secret) { var formatedKey = this.EncodeUtf8.parse(secret); // 将 key 转为 128bit 格式 var decryptedData = this.AES.decrypt(encryptData, formatedKey, { 'mode': this.Ecb, 'padding': this.Pkcs7 }); // 解密 return decryptedData.toString(this.EncodeUtf8) || encryptData; // 经过 AES 解密后,依然是一个对象,将其变成明文就需要按照 Utf8 格式转为字符串 }; EncryptUtil.maskData = function (content) { if (!content) { return content; } var start = content.length / 4; var end = content.length * 3 / 4; var head = content.substring(0, start); var tail = content.substring(end); var m = end - start; var middle = ''; for (var i = 0; i < m; i++) { middle += '*'; } return head + middle + tail; }; EncryptUtil.AES = require('crypto-js/aes'); EncryptUtil.EncodeUtf8 = require('crypto-js/enc-utf8'); EncryptUtil.EncodeHex = require('crypto-js/enc-hex'); EncryptUtil.EncodeBase64 = require('crypto-js/enc-base64'); EncryptUtil.Ecb = require('crypto-js/mode-ecb'); EncryptUtil.Pkcs7 = require('crypto-js/pad-pkcs7'); EncryptUtil.Sha1 = require('crypto-js/sha1'); EncryptUtil.MD5 = require('crypto-js/md5'); return EncryptUtil; }()); exports.EncryptUtil = EncryptUtil;