import 'dart:convert'; import 'package:encrypt/encrypt.dart'; import 'api_config.dart'; /// AES-128-ECB 加解密 abstract final class ApiCrypto { static final _key = Key.fromUtf8(ApiConfig.aesKey); static final _encrypter = Encrypter( AES( _key, mode: AESMode.ecb, padding: 'PKCS7', ), ); /// AES 加密,返回 Base64 字符串 static String encrypt(String plainText) { final encrypted = _encrypter.encrypt(plainText); return encrypted.base64; } /// AES 解密,输入 Base64 字符串 static String decrypt(String base64Cipher) { final encrypted = Encrypted.fromBase64(base64Cipher); return _encrypter.decrypt(encrypted); } /// 生成随机 Base64 字符串(用于噪音字段) static String randomBase64([int byteLength = 16]) { final bytes = List.generate(byteLength, (_) => DateTime.now().millisecondsSinceEpoch % 256); return base64Encode(bytes); } /// 生成 8 位随机字母数字 static String randomAlnum() { const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; return List.generate(8, (_) => chars[DateTime.now().microsecondsSinceEpoch % chars.length]).join(); } }