encryptData method
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');
}
}