|
@@ -1,4 +1,7 @@
|
|
|
import router from "@/router";
|
|
|
+import { store } from "@/store/store";
|
|
|
+import CryptoJS from "crypto-js";
|
|
|
+import { MD5 } from "./md5";
|
|
|
|
|
|
export function setUUID() {
|
|
|
if (!localStorage.getItem("uuidForEcs")) {
|
|
@@ -51,3 +54,129 @@ export function toChineseNumber(num: number) {
|
|
|
|
|
|
return ret;
|
|
|
}
|
|
|
+
|
|
|
+let salt: string;
|
|
|
+export function setSalt(_salt: string) {
|
|
|
+ salt = _salt;
|
|
|
+}
|
|
|
+
|
|
|
+export function getSalt() {
|
|
|
+ return salt;
|
|
|
+}
|
|
|
+
|
|
|
+export function getKey(timestamp: number) {
|
|
|
+ const { key, token } = store.user;
|
|
|
+ if (!key || !token) return "";
|
|
|
+
|
|
|
+ return MD5(`key=${key}&token=${token}×tamp=${timestamp}`);
|
|
|
+}
|
|
|
+
|
|
|
+function toHex(str: string) {
|
|
|
+ if (!str) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ const chars = [];
|
|
|
+ for (let n = 0; n < str.length; n++) {
|
|
|
+ chars.push(str.charCodeAt(n).toString(16));
|
|
|
+ }
|
|
|
+ return chars.join("");
|
|
|
+}
|
|
|
+
|
|
|
+const ivStr = "@M#A$G%A^2&0*2(1"; // 偏移量
|
|
|
+const iv = toHex(ivStr); // 16进制偏移量
|
|
|
+export function decryptLogin(encStr: string, key: string): string {
|
|
|
+ return CryptoJS.enc.Utf8.stringify(
|
|
|
+ CryptoJS.AES.decrypt(
|
|
|
+ CryptoJS.format.Hex.parse(encStr),
|
|
|
+ CryptoJS.enc.Hex.parse(toHex(key)),
|
|
|
+ {
|
|
|
+ iv: CryptoJS.enc.Hex.parse(iv),
|
|
|
+ mode: CryptoJS.mode.CBC,
|
|
|
+ padding: CryptoJS.pad.Pkcs7,
|
|
|
+ }
|
|
|
+ )
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+/** AES(带向量) 简写 A */
|
|
|
+export function encryptA(str: string, key: string) {
|
|
|
+ return CryptoJS.AES.encrypt(str, CryptoJS.enc.Hex.parse(toHex(key)), {
|
|
|
+ // iv: CryptoJS.enc.Hex.parse(iv),
|
|
|
+ mode: CryptoJS.mode.ECB,
|
|
|
+ padding: CryptoJS.pad.Pkcs7,
|
|
|
+ }).ciphertext.toString();
|
|
|
+}
|
|
|
+
|
|
|
+export function decryptA(encStr: string, key: string): string {
|
|
|
+ return CryptoJS.enc.Utf8.stringify(
|
|
|
+ CryptoJS.AES.decrypt(
|
|
|
+ CryptoJS.format.Hex.parse(encStr),
|
|
|
+ CryptoJS.enc.Hex.parse(toHex(key)),
|
|
|
+ {
|
|
|
+ // iv: CryptoJS.enc.Hex.parse(iv),
|
|
|
+ mode: CryptoJS.mode.ECB,
|
|
|
+ padding: CryptoJS.pad.Pkcs7,
|
|
|
+ }
|
|
|
+ )
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+/** base64加密 简写B */
|
|
|
+export function encryptB(str: string): string {
|
|
|
+ // return window.btoa(str);
|
|
|
+ return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(str));
|
|
|
+}
|
|
|
+
|
|
|
+/** base64加密 简写B */
|
|
|
+export function decryptB(str: string): string {
|
|
|
+ return CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(str));
|
|
|
+}
|
|
|
+
|
|
|
+/** RC4(无向量) 简写 C */
|
|
|
+export function encryptC(str: string, key: string) {
|
|
|
+ return CryptoJS.RC4.encrypt(
|
|
|
+ str,
|
|
|
+ CryptoJS.enc.Hex.parse(toHex(key))
|
|
|
+ ).toString();
|
|
|
+}
|
|
|
+
|
|
|
+export function decryptC(encStr: string, key: string): string {
|
|
|
+ return CryptoJS.enc.Utf8.stringify(
|
|
|
+ CryptoJS.RC4.decrypt(encStr, CryptoJS.enc.Hex.parse(toHex(key)))
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+/** DES(无向量) 简写 D */
|
|
|
+export function encryptD(str: string, key: string) {
|
|
|
+ return CryptoJS.DES.encrypt(str, CryptoJS.enc.Hex.parse(toHex(key)), {
|
|
|
+ mode: CryptoJS.mode.ECB,
|
|
|
+ padding: CryptoJS.pad.Pkcs7,
|
|
|
+ }).toString();
|
|
|
+}
|
|
|
+
|
|
|
+export function decryptD(encStr: string, key: string): string {
|
|
|
+ return CryptoJS.enc.Utf8.stringify(
|
|
|
+ CryptoJS.DES.decrypt(encStr, CryptoJS.enc.Hex.parse(toHex(key)), {
|
|
|
+ mode: CryptoJS.mode.ECB,
|
|
|
+ padding: CryptoJS.pad.Pkcs7,
|
|
|
+ })
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+/** TripleDES(无向量) 简写 E */
|
|
|
+export function encryptE(str: string, key: string) {
|
|
|
+ return CryptoJS.TripleDES.encrypt(str, CryptoJS.enc.Hex.parse(toHex(key)), {
|
|
|
+ mode: CryptoJS.mode.ECB,
|
|
|
+ padding: CryptoJS.pad.Pkcs7,
|
|
|
+ }).toString();
|
|
|
+}
|
|
|
+
|
|
|
+export function decryptE(encStr: string, key: string): string {
|
|
|
+ return CryptoJS.enc.Utf8.stringify(
|
|
|
+ CryptoJS.TripleDES.decrypt(encStr, CryptoJS.enc.Hex.parse(toHex(key)), {
|
|
|
+ mode: CryptoJS.mode.ECB,
|
|
|
+ padding: CryptoJS.pad.Pkcs7,
|
|
|
+ })
|
|
|
+ );
|
|
|
+}
|