EncryptionManager class
Die EncryptionManager-Klasse verwaltet AES- und RSA-Verschlüsselung und -Entschlüsselung.
Diese Klasse implementiert das Singleton-Pattern und bietet eine einheitliche Schnittstelle für verschiedene Verschlüsselungsoperationen:
AES-Verschlüsselung:
- AES-256 im CBC-Modus mit PKCS7-Padding
- Automatische IV-Generierung für jede Verschlüsselung
- Sichere Schlüsselspeicherung mit FlutterSecureStorage
- Persistente Schlüssel, die zwischen App-Starts erhalten bleiben
RSA-Verschlüsselung:
- OAEP-Padding mit SHA-256 Digest für maximale Sicherheit
- Unterstützung für blockweise Verarbeitung großer Daten
- Plattformübergreifende Implementierung (Web und Native)
- Schlüsselgenerierung oder Laden aus PEM-Dateien
Hauptfunktionen:
- Sichere Schlüsselgenerierung und -verwaltung
- Symmetrische und asymmetrische Verschlüsselung
- Automatische Initialisierung bei Bedarf
- Fehlerbehandlung und Validierung
Verwendung:
// Einfache Verwendung mit automatischer Schlüsselgenerierung
final encManager = EncryptionManager();
String encrypted = await encManager.encryptAES("Geheimer Text");
String decrypted = await encManager.decryptAES(encrypted);
// Verwendung mit vordefinierten Schlüsseln
final options = EncryptionOptions(
rsaPublicKeyFilePath: "assets/public.pem",
rsaPrivateKeyFilePath: "assets/private.pem"
);
final encManager = EncryptionManager.init(options);
Constructors
- EncryptionManager()
-
Factory-Konstruktor für die Singleton-Instanz des EncryptionManagers.
factory
- EncryptionManager.init(EncryptionOptions encryptionOptions)
-
Factory-Konstruktor zur Erstellung einer EncryptionManager-Instanz mit Konfiguration.
factory
Properties
- hashCode → int
-
The hash code for this object.
no setterinherited
- keyAES → Key?
-
Getter für den aktuell gespeicherten AES-Schlüssel.
no setter
-
keyRSA
→ AsymmetricKeyPair<
RSAPublicKey, RSAPrivateKey> ? -
Getter für das aktuell gespeicherte RSA-Schlüsselpaar.
no setter
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
decryptAES(
String encryptedText, {Key? key, String? padding = "PKCS7"}) → Future< String> - Entschlüsselt einen mit AES verschlüsselten Text im CBC-Modus.
-
decryptRSA(
Uint8List encryptedBytes, {RSAPrivateKey? privateKey}) → Future< Uint8List> - Entschlüsselt Daten, die mit RSA-Verschlüsselung verschlüsselt wurden.
-
decryptRSAInBlocks(
String encryptedText, {RSAPrivateKey? privateKey}) → Future< String> - Entschlüsselt längere Texte, die blockweise mit RSA verschlüsselt wurden.
-
encryptAES(
String plainText, {Key? key, String? padding = "PKCS7"}) → Future< String> - Verschlüsselt den angegebenen Klartext mit AES-Verschlüsselung im CBC-Modus.
-
encryptRSA(
Uint8List plainBytes, {RSAPublicKey? publicKey}) → Future< Uint8List> - Verschlüsselt Daten mit RSA-Verschlüsselung für kleinere Datenmengen.
-
encryptRSAInBlocks(
String plainText, {RSAPublicKey? publicKey}) → Future< String> - Verschlüsselt längere Texte blockweise mit RSA-Verschlüsselung.
-
generateAESKey(
List< int> bytes) → Key - Konvertiert ein Byte-Array in einen AES-Schlüssel.
-
generateRandomAESKey(
) → Future< Key> - Generiert einen kryptographisch sicheren, zufälligen AES-256-Schlüssel.
-
generateRandomRSAKey(
{int bitLength = 2048}) → Future< AsymmetricKeyPair< RSAPublicKey, RSAPrivateKey> > - Generiert ein neues zufälliges RSA-Schlüsselpaar.
-
initializeAESKey(
) → Future< void> - Initialisiert den AES-Schlüssel durch Laden aus dem Speicher oder Generierung eines neuen Schlüssels.
-
initializeRSAKeyPair(
{int bitLength = 2048}) → Future< void> - Initialisiert das RSA-Schlüsselpaar durch Generierung neuer Schlüssel.
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited