import { decodeBase64, encodeBase64 } from "@std/encoding/base64"; import { Aes } from "crypto/aes.ts"; import { Ecb, Padding } from "crypto/block-modes.ts"; import type { Config } from "./config.ts"; export const encryptQuery = ( queryParams: string, config: Config, ): string => { try { const cipher = new Ecb( Aes, new TextEncoder().encode( config.server.secret_key, ), Padding.PKCS7, ); const encodedData = new TextEncoder().encode( queryParams, ); const encryptedData = cipher.encrypt(encodedData); return encodeBase64(encryptedData); } catch (err) { console.error("[ERROR] Failed to encrypt query parameters:", err); return ""; } }; export const decryptQuery = ( queryParams: string, config: Config, ): string => { try { const decipher = new Ecb( Aes, new TextEncoder().encode(config.server.secret_key), Padding.PKCS7, ); const decryptedData = new TextDecoder().decode( decipher.decrypt( decodeBase64( queryParams, ), ), ); return decryptedData; } catch (err) { console.error("[ERROR] Failed to decrypt query parameters:", err); return ""; } };