encryptData function

String? encryptData(
  1. dynamic data,
  2. String key
)

Implementation

String? encryptData(dynamic data, String key) {
  if (data == null) return null;

  final plain = data is String ? data : jsonEncode(data);

  if (key.isEmpty) {
    throw ArgumentError('Se requiere una clave (key) para encriptar.');
  }

  final keyBytes = utf8.encode(key);

  if (keyBytes.length != 16 && keyBytes.length != 32) {
    throw ArgumentError(
        'La clave debe tener 16 (AES-128) o 32 (AES-256) caracteres.');
  }

  final encrKey = encrypt.Key(Uint8List.fromList(keyBytes));
  final aes = encrypt.AES(
    encrKey,
    mode: encrypt.AESMode.ecb,
    padding: 'PKCS7',
  );
  final encrypter = encrypt.Encrypter(aes);

  final encrypted = encrypter.encrypt(plain, iv: null);
  return encrypted.base64;
}