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