easy-api-client
Version:
开源项目服务端api框架easy-spring-boot-api的typescript客户端api对接工具包
98 lines (97 loc) • 3.73 kB
JavaScript
;
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;