You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
1.1 KiB
28 lines
1.1 KiB
export const encrypt = (word, keyStr) => {
|
|
keyStr = keyStr ? keyStr : "0123456789QMSaas";
|
|
var key = window.CryptoJS.enc.Utf8.parse(keyStr); //Latin1 w8m31+Yy/Nw6thPsMpO5fg==
|
|
var srcs = window.CryptoJS.enc.Utf8.parse(word);
|
|
var encrypted = window.CryptoJS.AES.encrypt(srcs, key, {
|
|
mode: window.CryptoJS.mode.ECB,
|
|
padding: window.CryptoJS.pad.Pkcs7,
|
|
});
|
|
return encrypted.toString();
|
|
};
|
|
|
|
export const decrypt = (word, keyStr) => {
|
|
keyStr = keyStr ? keyStr : "0123456789QMSaas";
|
|
var key = window.CryptoJS.enc.Utf8.parse(keyStr); //Latin1 w8m31+Yy/Nw6thPsMpO5fg==
|
|
var decrypt = window.CryptoJS.AES.decrypt(word, key, {
|
|
mode: window.CryptoJS.mode.ECB,
|
|
padding: window.CryptoJS.pad.Pkcs7,
|
|
});
|
|
return window.CryptoJS.enc.Utf8.stringify(decrypt).toString();
|
|
};
|
|
|
|
const getStamp = () => parseInt(new Date().getTime() / 1000);
|
|
export const assembleUrl = (url) => {
|
|
const [prefix, uri] = url.split("mall");
|
|
let stamp = getStamp();
|
|
let token = encodeURIComponent(encrypt(uri + stamp));
|
|
return `${prefix}mall${uri}?token=${token}&time=${stamp}`;
|
|
};
|
|
|