import CryptoJS from "crypto-js";
// 解密,判断是否是HKUST-GZ开头
export function decrypt(cipher) {
const decryptDES = (ciphertext, key) => {
const bytes = CryptoJS.DES.decrypt(
ciphertext,
CryptoJS.enc.Utf8.parse(key),
{ mode: CryptoJS.mode.ECB }
);
return bytes.toString(CryptoJS.enc.Utf8).trim();
};
const isSessionIdValid = (sessionid) => {
const key = "your_key"; // 替换为你的密钥
const decryptedText = decryptDES(sessionid, key);
const [university, user_id, timestamp] = decryptedText.split("&");
// Check if the decrypted values meet the requirements
console.log(university);
return university === "HKUST-GZ";
};
return isSessionIdValid(cipher).toString();
}
// 解析search传参
export function getSearch(str) {
if (str.indexOf("?") != -1) {
let obj = {};
str
.split("?")[1]
.split("&")
.map((el) => {
let arr = el.split("=");
obj[arr[0]] = arr[1];
});
return obj;
} else {
return;
}
}
使用:
const location = useLocation();
const cipher = getSearch(location.search).cipher
let flag = decrypt(decodeURIComponent(cipher));
if (flag) {
// 解密后的cipher符合要求
} else {
// 不符合要求,不允许操作界面
}