# Platform Encryption A robust and flexible encryption package for the Protevus platform, implementing Laravel-inspired encryption functionality in Dart. ## Features - Support for multiple cipher types (AES-128-CBC, AES-256-CBC, AES-128-GCM, AES-256-GCM) - Encryption and decryption of both strings and objects - Key management with support for previous keys - Proper error handling with EncryptException and DecryptException ## Installation Add this package to your `pubspec.yaml`: ```yaml dependencies: platform_encryption: ^1.0.0 ``` Then run: ``` dart pub get ``` ## Usage Here's a basic example of how to use the Encrypter class: ```dart import 'package:platform_encryption/platform_encryption.dart'; void main() { // Generate a key for AES-256-CBC final key = Encrypter.generateKey('aes-256-cbc'); // Create an Encrypter instance final encrypter = Encrypter(key, cipher: 'aes-256-cbc'); // Encrypt a string const originalString = 'Hello, Protevus Platform!'; final encryptedString = encrypter.encryptString(originalString); // Decrypt the string final decryptedString = encrypter.decryptString(encryptedString); print('Original: $originalString'); print('Encrypted: $encryptedString'); print('Decrypted: $decryptedString'); } ``` ### Encrypting and Decrypting Objects You can also encrypt and decrypt objects: ```dart final originalObject = {'username': 'john_doe', 'email': 'john@example.com'}; final encryptedObject = encrypter.encrypt(originalObject); final decryptedObject = encrypter.decrypt(encryptedObject); ``` ### Using Previous Keys To support key rotation, you can provide previous keys when creating an Encrypter instance: ```dart final oldKey = Encrypter.generateKey('aes-256-cbc'); final newKey = Encrypter.generateKey('aes-256-cbc'); final encrypter = Encrypter(newKey, cipher: 'aes-256-cbc', previousKeys: [oldKey]); ``` This allows the Encrypter to decrypt messages that were encrypted with the old key. ### Error Handling The package throws `EncryptException` and `DecryptException` for encryption and decryption errors respectively: ```dart try { encrypter.encrypt(null); } on EncryptException catch (e) { print('Encryption failed: $e'); } try { encrypter.decrypt('invalid_payload'); } on DecryptException catch (e) { print('Decryption failed: $e'); } ``` ## API Reference For detailed API documentation, please refer to the [API Reference](link-to-api-docs). ## Contributing Contributions are welcome! Please read our [contributing guidelines](link-to-contributing-guidelines) before submitting pull requests. ## License This project is licensed under the [MIT License](link-to-license).