encryptData method

String encryptData(
  1. String plaintext
)

Encrypt data before storing.

Returns base64-encoded encrypted data with IV/nonce prepended.

Format: Encrypted DataAuth Tag (for GCM/Poly1305)

Implementation

String encryptData(String plaintext) {
  if (!config.enabled) return plaintext;

  try {
    // Compress if enabled
    String dataToEncrypt = plaintext;
    if (config.compressBeforeEncryption) {
      final bytes = utf8.encode(plaintext);
      final compressed = gzip.encode(bytes);
      dataToEncrypt = base64.encode(compressed);
    }

    switch (config.algorithm) {
      case EncryptionAlgorithm.aes256GCM:
        return _encryptAesGcm(dataToEncrypt);

      case EncryptionAlgorithm.aes256CBC:
        return _encryptAesCbc(dataToEncrypt);

      case EncryptionAlgorithm.chacha20Poly1305:
        return _encryptChaCha20(dataToEncrypt);
    }
  } catch (e) {
    throw EncryptionException('Encryption failed: $e');
  }
}