# Daten-Neuverschlüsselung

Dieses Script verschlüsselt alle verschlüsselten Daten mit einem neuen Schlüssel neu.

## Verwendung

### Voraussetzungen

1. Stelle sicher, dass `ENCRYPTION_KEY` in der `.env` Datei gesetzt ist:
   ```bash
   ENCRYPTION_KEY=dein-neuer-sicherer-schlüssel-hier
   ```

2. Optional: Wenn du einen spezifischen alten Schlüssel verwendest (nicht den Standard), kannst du ihn angeben:
   ```bash
   node scripts/re-encrypt-data.js --old-key="dein-alter-schlüssel"
   ```

### Ausführung

```bash
node scripts/re-encrypt-data.js
```

## Was wird neu verschlüsselt?

Das Script verarbeitet folgende Dateien:

1. **`server/data/users.json`** - Benutzerdaten
2. **`server/data/members.json`** - Mitgliederdaten
3. **`server/data/membership-applications/*.json`** - Mitgliedschaftsanträge (wenn sie ein `encryptedData` Feld enthalten)
4. **`server/data/membership-applications/*.data`** - Verschlüsselte Antragsdaten

## Sicherheit

- **Automatische Backups**: Vor jeder Änderung werden Backups im Verzeichnis `backups/re-encrypt-<timestamp>/` erstellt
- **Mehrere Schlüssel**: Das Script versucht automatisch verschiedene alte Standard-Schlüssel:
  - `default-key-change-in-production`
  - `local_development_encryption_key_change_in_production`
  - Ein optional angegebener `--old-key` Parameter

## Beispiel

```bash
# Standard-Ausführung (verwendet Standard-Entwicklungsschlüssel)
node scripts/re-encrypt-data.js

# Mit spezifischem altem Schlüssel
node scripts/re-encrypt-data.js --old-key="mein-alter-produktions-schlüssel"
```

## Fehlerbehandlung

Falls die Entschlüsselung mit allen verfügbaren Schlüsseln fehlschlägt:
- Das Script bricht ab
- Alle Backups bleiben erhalten
- Du kannst die Dateien manuell aus den Backups wiederherstellen

## Wichtig

⚠️ **WICHTIG**: Stelle sicher, dass:
- Die `.env` Datei den neuen `ENCRYPTION_KEY` enthält
- Du ein Backup der Daten hast (wird automatisch erstellt)
- Der Server während der Ausführung nicht läuft
- Du nach der Ausführung testest, ob alles funktioniert

