- Official Post
Download: https://www.taxpool.net/mod_pseudo/mod_pseudo.zip
Programmbeschreibung
mod_pseudo ist ein Werkzeug zur Anonymisierung, Pseudonymisierung und strukturierten Verarbeitung von Datenbeständen aus CSV-, TXT- und Excel-Dateien. Die Anwendung unterstützt Anwender dabei, sensible personenbezogene oder unternehmensbezogene Informationen so zu verändern, dass sie für Tests, Analysen, Supportfälle oder Entwicklungsumgebungen genutzt werden können, ohne auf reale Daten zurückgreifen zu müssen.
Das Programm arbeitet feldbasiert: Für jede Spalte können gezielt Aktionen definiert werden, beispielsweise Löschen, Konvertieren oder Pseudonymisieren von Inhalten. Abhängig vom Einsatzzweck kann entweder eine echte Anonymisierung erfolgen – etwa durch vollständiges Entfernen von Feldinhalten – oder eine reversibel nachvollziehbare Pseudonymisierung, bei der der ursprüngliche Wert durch einen stabilen Ersatzwert ersetzt wird.
Der Prozess der Pseudonymisierung erfolgt deterministisch auf Basis eines HMAC-Schlüssels. Dadurch erhalten identische Eingabewerte immer denselben Ergebniswert, auch über mehrere Dateien hinweg. Der Schlüssel wird nicht im Programm gespeichert, sondern verbleibt vollständig unter der Kontrolle des Anwenders. Dadurch bleiben sowohl Datenschutz- als auch Compliance-Anforderungen gewahrt. Optional kann eine Zuordnungsdatei generiert werden, die die Beziehung zwischen Original- und Ersatzwerten dokumentiert, sofern dies für Test- oder Migrationsszenarien erforderlich ist.
Für häufige Feldtypen stehen spezialisierte Aktionen zur Verfügung, u. a. für Namen, Firmendaten, Adressen, Telefon- und Steuernummern, Datums- und Zeitangaben, Beträge, PLZ/Ort-Kombinationen, IP- und Mail-Adressen, UUIDs oder numerische Werte. Für Felder wie IBAN, USt-ID, BIC oder IP-Adressen können, sofern gewünscht, syntaktisch gültige, aber nicht existierende Werte erzeugt werden. Ebenso können numerische oder Datumswerte skaliert oder verschoben werden, sodass realistische, aber datenschutzkonforme Daten entstehen.
mod_pseudo ermöglicht zudem die direkte Bearbeitung von Text- und Excel-Dateien, ohne dass externe Programme wie Excel oder LibreOffice erforderlich sind. Inhalte können geändert, konvertiert, formatiert oder um neue Spalten ergänzt werden. Damit eignet sich das Werkzeug nicht nur zur Anonymisierung, sondern auch zur Datenbereinigung, Strukturumwandlung oder zur Erstellung standardisierter Testdatensätze.
Für erweiterte Automations- und Integrationsanforderungen steht eine JavaScript-Schnittstelle zur Verfügung. Über diese lassen sich Datensätze programmgesteuert analysieren, verändern, exportieren oder in Abläufe integrieren.
mod_pseudo wurde insbesondere für den Einsatz in Softwaretests, Supportprozessen, Produktdokumentation, Datenmigrationen, Qualitätssicherung und Entwicklungsumgebungen entwickelt, in denen reale Daten aus Datenschutz-, Sicherheits- oder Verfügbarkeitsgründen nicht eingesetzt werden dürfen. Der Schwerpunkt liegt dabei auf Datenschutz, Reproduzierbarkeit, einfacher Bedienbarkeit und konsistenten Ergebnissen bei kleinen wie großen Datenmengen.
Einstellungen
Eingabedatei: In das Eingabefeld kann entweder ein Dateipfad eingegeben oder aus der Zwischenablage eingefügt werden. Mit dem Schalter Ändern erscheint ein Dateiauswahldialog.
Aktualisieren: Setzt manuelle Änderungen (Bearbeitbar) zurück und lädt die Daten erneut so, wie sie beim ersten Import eingelesen wurden. Hinweis: Externe Änderungen an der Datei werden derzeit nicht berücksichtigt.
Laden: Lädt eine Konfiguration, die zuvor mit Speichern gesichert wurde.
Ab Zeile: Hier wird die Zeilennummer angegeben, ab der die Feldtitel beginnen. Existieren keine Feldtitel (Titel deaktiviert), muss hier die Zeilennummer eingetragen werden, an der die eigentlichen Daten beginnen.
Wenn Feldtitel vorhanden sind, wird aktuell angenommen, dass die Datenzeile direkt darunter beginnt. Fehlen Feldtitel, erzeugt das Programm automatische Titel:
- Bei Textdateien: Ganzzahlen (1, 2, 3 ...)
- Bei Excel-Dateien: Excel-Spaltennamen (A, B, C ...)
Hinweis: Bei DATEV-CSV-Dateien muss Titel aktiviert und bei Ab Zeile der Wert 2 eingetragen werden.
Relaxed: Sollte immer aktiviert sein.
Titel: Die Daten enthalten eine Kopfzeile mit Feldtiteln.
Bearbeitbar: Daten können in der Listenansicht Eingabe: per Mausklick direkt bearbeitet werden.
Einstellungen für Textdateien
Zuerst sollte der passende Datenfeld-Separator festgelegt werden.
Optional kann der Text-Separator für Zeichenketten definiert werden.
Beispiele (Separator = Semikolon):
| Variante | Beispiel |
|---|---|
| Doppelt | "Version ""XT""";1200€ |
| Einfach | 'Version ''XT''';1200€ |
| Beide | 'Version ''XT''';"1200€" |
Escape-Sequenzen:
- TwoQuote (Standard) Anführungszeichen in Texten bleiben erhalten. Beispiel: "Ausgabe-""Test""";1200€ → Ausgabe-"Test";1200€
- Backslash Entfernt Backslashes.
Kodierung: Bei Textdateien häufig: UTF-8, ISO-8859-1 oder UTF-32. Falls Umlaute falsch dargestellt werden, muss die Kodierung angepasst werden. In Notepad++ wird die erkannte Kodierung im Menü Codierung angezeigt.
Feldaktionen
Feldinhalte löschen (Anonymisieren): Durch Aktivieren des entsprechenden Datenfeldes werden alle Werte dieses Feldes in der Ausgabe gelöscht. Mehrfachauswahl ist möglich.
Feldinhalte ändern (Pseudonymisieren oder Konvertieren): Im linken Auswahlfeld wird das Datenfeld ausgewählt, im rechten die gewünschte Aktion. Aktionen, die mit * enden, konvertieren nur, pseudonymisieren aber nicht.
Mit dem Schalter Zuweisen wird die Aktion dem Datenfeld zugeordnet. Um eine Zuordnung zu entfernen, wird die leere Auswahl im Aktionsfeld ausgewählt und zugewiesen.
Mit dem Schalter Konfigurieren können zusätzliche Optionen zur Verarbeitung bestimmter Datenfelder eingestellt werden. Diese erweiterten Einstellungen werden weiter unten beschrieben.
Dateien
Ausgabedatei: In das Eingabefeld kann entweder ein Dateipfad eingegeben oder aus der Zwischenablage eingefügt werden. Mit dem Schalter Ändern erscheint ein Dateiauswahldialog.
Formatvorgaben:
- Textdateien: .csv
- Excel/OpenOffice: .xlsx
Zuordnungsdatei: Erzeugt im Ausgabeordner eine Datei wie: mod_pseudo_map_yyyyMMdd_HHmmss.csv Diese enthält eine Gegenüberstellung der ursprünglichen und der geänderten Werte. Es werden nur Werte aufgelistet, die über Feldinhalte ändern verändert wurden.
Scriptdatei: Aktiviert die Verwendung einer zusätzlichen JavaScript-Datei. In das Eingabefeld kann entweder ein Dateipfad eingegeben oder aus der Zwischenablage eingefügt werden. Mit dem Schalter Ändern erscheint ein Dateiauswahldialog.
Die zusätzliche API wird weiter unten beschrieben.
Verarbeitung
Testen und Erstellen: Erzeugt die Ausgabedatei und ggf. die Zuordnungsdatei. Eine Vorschau der Ergebnisdaten erscheint in der Listenansicht Ausgabe:.
Speichern: Speichert die aktuelle Konfiguration, sodass sie später über Laden wiederhergestellt werden kann.
Zusätzliche Optionen für Feldaktionen — Zusammenfassung
Die erweiterten Einstellungen wirken nur bei Datenfeldern, für die zuvor eine Aktion ausgewählt und zugewiesen wurde. Sie bestimmen, wie Werte erzeugt, verändert oder simuliert werden.
Metadaten entfernen
Entfernt alle Zeilen vor dem Tabellenkopf bzw. der ersten Datenzeile (falls keine Titel vorhanden) aus der Zieldatei. Die eigentlichen Spaltenüberschriften (Titelzeile der Tabelle) und die Daten bleiben erhalten. Hinweis: Bei DATEV-CSV-Dateien oder anderen Formaten, die einen Metadatenblock am Anfang zwingend benötigen, darf diese Einstellung nicht aktiviert werden.
Echtwerte simulieren
Erzeugt realistisch wirkende pseudonymisierte Werte für strukturierte Datenfelder wie:
- PLZ
- Straße / Hausnummer
- Telefonnummer
- Steuernummer
- USt-ID
- IP-Adresse
Die erzeugten Werte orientieren sich am üblichen Format, sind jedoch nicht rückrechenbar und nicht real. Sie dienen ausschließlich dazu, Testdaten plausibel erscheinen zu lassen.
| Datenfeld | Ergebnis | Validität |
|---|---|---|
| PLZ, Straße, Telefonnummer | strukturell plausibel | nicht garantiert gültig |
| Steuernummer, USt-ID | formatähnlich | nicht prüfbar gültig |
| IP-Adresse | formal gültig (IPv4/IPv6) | technisch gültig, aber nicht echt |
Gleitkomma immer als Text
Speichert Dezimalwerte unabhängig vom System- oder Excel-Format als Text, um Lokalisierungs- oder Rundungsfehler zu vermeiden oder wenn eine Software ein spezielles Eingabeformat benötigt. Textwerte lassen sich in Excel oder LibreOffice nicht direkt für Berechnungen verwenden.
Datumsverschiebung
Verschiebt Datumswerte zufällig innerhalb eines definierten Bereichs. Optional kann eine einheitliche Verschiebung für alle Datumswerte verwendet werden, um zeitliche Beziehungen (z. B. Buchungs- und Leistungsdatum) beizubehalten. Hinweis: Der Minimalwert beträgt 30 Tage. Eine größere Verschiebung führt zu einer stärkeren Pseudonymisierung und erschwert Rückschlüsse auf den ursprünglichen Wert.
Formatierung für Datum und Datum-Zeit
Definiert Ein- und Ausgabeformatregeln (z. B. dd.MM.yyyy, yyyy-MM-dd, ISO-8601). Diese Formate steuern, wie Text als Datum erkannt und wie der Ausgabewert dargestellt wird.
Aktionen
| Aktion | Ausgabe | Bemerkung |
|---|---|---|
| BIC | z.B. BCAADEA0001 | SWIFT/BIC-Werte werden syntaktisch korrekt erzeugt, entsprechen jedoch keiner realen Bank. Das bedeutet: Der Code ist formal gültig, kann aber nicht über externe Bankverzeichnisse zugeordnet werden. |
| Betrag (Komma) Betrag (Punkt) Beispieleingabe: 600,00 | Einstellungen: Faktor für Gleitkommazahlen: 1,5. Gleitkomma immer als Text aktiv. 900.00 (Punkt) 900,00 (Komma) Gleitkomma immer als Text inaktiv. 900.00 intern, die Anzeigeformatierung ist vom Anzeigeformat, das meist lokale-abhängig ist, abhängig. | Kann mit Faktor für Gleitkommazahlen 1,0 z.B. zum Konvertieren in einen Text verwendet werden. Sofern außer den reinen Zahlenwerten zusätzliche Texte wie z.B. CHF, EUR, etc. enthalten sind, wird die Ausgabe im Textformat gespeichert. |
| Datum | Zufällig verschobener Datumswert innerhalb des eingestellten Bereichs. | Einstellung für die Verschiebung in Tagen: Maximale Verschiebung für Datumswerte in Tagen Sofern der Eingabewert bei xlsx im Textformat vorliegt, (in Libreoffice STRG+F8 drücken um berechenbare Felder anzuzeigen) oder bei Textdateien, muss unter Text zu Datum: Formatierung die korrekte Formatierung des Datums eingegeben werden, ansonsten wird ein Leerfeld erzeugt. Falls die Einstellung Datum immer als Text aktiv ist, die Einstellung Datum zu Text: Formatierung beachten. |
| Datum zu Text * | Der ursprüngliche Datumswert in benutzerdefiniertem Datumsformat als Text. Keine Pseudonymisierung. | Sofern der Eingabewert bereits als Text vorliegt: Die Einstellung Text zu Datum: Formatierung beachten. Für die Ausgabe die Einstellung Datum zu Text: Formatierung beachten. |
| Datum-Zeit | Ein bzgl. des Eingabewerts um Tage und Sekunden verschobener Datumswert. | Einstellung für die Verschiebung in Tagen: Maximale Verschiebung für Datumswerte in Tagen. Der Verschiebungsbereich für Sekunden beträgt 86400 sec (24h). Sofern der Eingabewert bereits als Text vorliegt: Die Einstellung Text zu Datum-Zeit: Formatierung beachten. Falls die Einstellung Datum-Zeit immer als Text aktiv ist, die Einstellung Datum-Zeit zu Text: Formatierung beachten. |
| Datum-Zeit zu Text * | Der ursprüngliche Datumswert in benutzerdefiniertem Datumsformat als Text. Keine Pseudonymisierung. | Sofern der Eingabewert bereits als Text vorliegt: Die Einstellung Text zu Datum-Zeit: Formatierung beachten. Für die Ausgabe die Einstellung Datum-Zeit zu Text: Formatierung beachten. |
| Domain | z.B. xvddpatdirqt.invalid | |
| z.b. byakorgaoeldvdls@example.invalid | ||
| Firma | z.B. compmexgdsijvbunsu | |
| Fortlaufende Zahl | Fortlaufende Zahl von 1 beginnend. | |
| Ganzzahl Beispieleingabe: 600 | Einstellungen: Faktor für Ganzzahlen: 1,5. Resultat: 900 | |
| IBAN | z.B. DE95000000000006545177 | IBAN-Werte werden syntaktisch korrekt erzeugt, entsprechen jedoch keiner realen Bank. Das bedeutet: Der Code ist formal gültig, kann aber nicht über externe Bankverzeichnisse zugeordnet werden. Die ersten zwei Buchstaben müssen einem gültigen EU-Land entsprechen, ansonsten Ausgabe: Unsupported. |
| IP | Einstellung Echtwerte simulieren: z.B. 2001:db8:dd1c:6035:79a2:18ac:d6d6:f11b ansonsten z.B. ippllfrrvvowelkbqd | Ohne Echtwertsimulation Vorsilbe ip. |
| Name | z.B. nameudojgoljwtejxy | Vorsilbe name. |
| Ort | z.B. placegdvbyjkkeius | Vorsilbe place. |
| PLZ | Einstellung Echtwerte simulieren: z.B. 51128 ansonsten z.B. 24339152 | |
| Steuernummer | Einstellung Echtwerte simulieren: z.B. 2967510019 ansonsten z.B. stno71566000418276 | Ohne Echtwertsimulation Vorsilbe stno. |
| Strasse | z.B. strtefbvhvmkfse | Vorsilbe str. |
| Strasse Nr | Eingabewert z.B. Weg 123. Einstellung Echtwerte simulieren: z.B. sjxuywwp 123 ansonsten z.B. strsjxuywwpygxo 123 | Ohne Echtwertsimulation Vorsilbe str. |
| Telefon | Eingabewert z.B. 030 000000. Einstellung Echtwerte simulieren: z.B. 922116720 ansonsten z.B. tel46645331375772 | Ohne Echtwertsimulation Vorsilbe tel. |
| Text | z.B. txtzlhhmgcysorfyt | Vorsilbe txt. |
| USt-ID | Einstellung Echtwerte simulieren: z.B. DE3856574700 ansonsten z.B. vatldshaoxfphfkacfo | Ohne Echtwertsimulation Vorsilbe vat. |
| Uuid | z.B. dce92d582e7143c993bac685465cc4ae | Globale eindeutige ID. |
DataSheetObject – JavaScript-API
DataSheetObject stellt einen Zeilenbereich eines QAbstractItemModel für JavaScript zur Verfügung. Zeilen werden mit View-Index (viewRow) angesprochen, Spalten entweder über Index oder Feldnamen.
Hinweise zu Zeilen- und Spaltenindizes
- viewRow ist 0-basiert innerhalb des Bereichs: 0 <= viewRow < numRows().
Hinweise zum Zugriff auf einen Spaltenindex per Feldnamen
Die internen Feldnamen sind:
- Bei Textdateien: Ganzzahlen (1, 2, 3 ...)
- Bei Excel-Dateien: Excel-Spaltennamen (A, B, C ...)
Sofern keine Titelzeile existiert, ist der Anzeigefeldname identisch mit dem internen Feldnamen. Existiert eine Titelzeile, ist der Anzeigefeldname der Spaltenname, der in der Feldnamenliste in eckigen Klammern steht.
Basis-Informationen zum Datenbereich
Zeilenbereich
- int numRows() const Anzahl der Zeilen im Bereich. Ist endRow < startRow, ergibt sich 0.
- bool isEmpty() const true, wenn numRows() == 0.
Spalteninformationen
- int numCols() const Anzahl der Spalten.
- QString colName(int i, bool display = true) const Gibt den Spaltennamen zu Index i zurück.
- display = true → Anzeigename (sichtbarer Feldtitel)
- display = false → interner Name (z. B. A, B, 1, 2)
- int colNo(const QString &name, bool display = true) const Liefert den Spaltenindex zu einem Feldnamen.
- display = true → name ist Anzeigename
- display = false → name ist interner Name Rückgabe -1, wenn der Name nicht gefunden wird.
Textzugriff (String-basiert)
Lesen
- QString getText(int viewRow, int col) const Liefert den Text der Zelle (Qt.DisplayRole). Ungültiger Index → leerer String.
- QString getText(int viewRow, const QString &name, bool internal = false) const Wie oben, Spalte per Feldnamen.
- internal = false → Anzeigename
- internal = true → interner Name
Schreiben
- bool setText(int viewRow, int col, const QString &s) const Setzt den Text der Zelle (Qt.EditRole). Rückgabe: true bei Erfolg, sonst false.
- bool setText(int viewRow, const QString &name, const QString &s, bool internal = false) const Wie oben, Spalte per Feldnamen.
Generischer Zugriff mit QVariant
Lesen
- QVariant getValue(int viewRow, int col, int role = Qt.DisplayRole) const Liefert den Zellenwert als QVariant für eine bestimmte Rolle (z. B. Qt.DisplayRole, Qt.EditRole).
- QVariant getValue(int viewRow, const QString &name, bool internal = false, int role = Qt.DisplayRole) const Wie oben, mit Spaltennamen.
Schreiben
- bool setValue(int viewRow, int col, const QVariant &v, int role = Qt.EditRole) const Setzt den Wert mit der angegebenen Rolle (Standard: EditRole).
- bool setValue(int viewRow, const QString &name, const QVariant &v, bool internal = false, int role = Qt.EditRole) const Wie oben, mit Spaltennamen.
Typisierte Setter (Int, Int64, Double, Bool, String, Date, DateTime)
Alle diese Funktionen rufen intern setValue() mit einem passenden QVariant auf.
- bool setInt(int viewRow, int col, int v) const
- bool setInt(int viewRow, const QString &name, int v, bool internal = false) const
- bool setInt64(int viewRow, int col, qint64 v, int role = Qt.EditRole) const
- bool setInt64(int viewRow, const QString &name, qint64 v, bool internal = false, int role = Qt.EditRole) const
- bool setDouble(int viewRow, int col, double v) const
- bool setDouble(int viewRow, const QString &name, double v, bool internal = false) const
- bool setBool(int viewRow, int col, bool v) const
- bool setBool(int viewRow, const QString &name, bool v, bool internal = false) const
- bool setString(int viewRow, int col, const QString &v) const
- bool setString(int viewRow, const QString &name, const QString &v, bool internal = false) const
- bool setDate(int viewRow, int col, const QDate &v) const
- bool setDate(int viewRow, const QString &name, const QDate &v, bool internal = false) const
- bool setDateTime(int viewRow, int col, const QDateTime &v) const
- bool setDateTime(int viewRow, const QString &name, const QDateTime &v, bool internal = false) const
Typisierte Getter (Int, Int64, Double, Bool, String, Date, DateTime)
Hier steckt zusätzliche Logik, z. B. Parsing von Währungsstrings.
Integer
- int getInt(int viewRow, int col) const
- Wenn Zelle QString ist → Parsing über parseCurrencyString(...).
- Sonst → v.toInt().
- int getInt(int viewRow, const QString &name, bool internal = false) const
64-Bit Integer
- qint64 getInt64(int viewRow, int col) const Falls String → Parsing wie oben, sonst toLongLong().
- qint64 getInt64(int viewRow, const QString &name, bool internal = false) const
Double
- double getDouble(int viewRow, int col) const String → parseCurrencyString(...), sonst toDouble().
- double getDouble(int viewRow, const QString &name, bool internal = false) const
Bool
- bool getBool(int viewRow, int col) const
- QVariant::Bool → direkt.
- String wird als true gewertet bei: "true", "1", "yes", "ja", "wahr" und als false bei: "false", "0", "no", "nein", "falsch"
- Sonst Fallback → v.toBool().
- bool getBool(int viewRow, const QString &name, bool internal = false) const
String
- QString getString(int viewRow, int col) const Liefert den Wert (EditRole) als String.
- QString getString(int viewRow, const QString &name, bool internal = false) const
Date
- QDate getDate(int viewRow, int col) const
- QDate → direkt
- QDateTime → Datumsteil
- QString → Parsing über dlg->readDateTime(...) (inkl. Excel/1900/1904-Unterstützung) Ungültig → leeres QDate.
- QDate getDate(int viewRow, const QString &name, bool internal = false) const
DateTime
- QDateTime getDateTime(int viewRow, int col) const
- QDateTime → direkt
- QDate → Zeit = 00:00:00
- QString → dlg->readDateTime(...) Ungültig → leeres QDateTime.
- QDateTime getDateTime(int viewRow, const QString &name, bool internal = false) const
Spalten hinzufügen
int insertColumn(QString dispName) Fügt am Ende des Datenblatts eine neue Spalte ein.
Verhalten:
- Bei CSV:
- interner Name: laufende Nummer als Zeichenkette "1", "2", …
- Bei XLSX:
- interner Name: Excel-Spaltenname ("A", "B", …)
- Wenn hasHeader == true:
- in der Kopfzeile wird dispName eingetragen
- Wenn hasHeader == false:
- dispName wird auf den internen Namen gesetzt
Rückgabewert:
- >= 0 → Index der neuen Spalte
- -1 → Einfügen fehlgeschlagen (z. B. Name doppelt oder Modell unterstützt die Operation nicht)
- Bei CSV:
Numerische Strings skalieren
QString scaleNumericString(const QString &s, double factor, int sep) const Skaliert einen numerischen Wert, der in einem String steht (z. B. Betrag).
Parameter:
- s → Eingabestring (z. B. "600,00" oder "600.00 EUR")
- factor → Faktor (z. B. 1.5)
- sep:
- 0 → Dezimaltrennzeichen Komma
- 1 → Dezimaltrennzeichen Punkt
Bei Erfolg → skalierter String, sonst wird s unverändert zurückgegeben. Mit factor = 1.0 kann man z. B. auch nur das Format normalisieren.
UI-Hilfsfunktionen
- void messageBox(const QString &title, const QString &s) const Zeigt eine einfache Info-MessageBox.
- void toClipBoard(const QString &s) const Kopiert den Text in die Systemzwischenablage.
Dateien schreiben
- bool writeUtf8TextFile(const QString &filePath, const QString &text, bool withBom) const Schreibt eine UTF-8-Textdatei atomar auf die Platte.
- withBom = true → mit UTF-8-BOM
- withBom = false → ohne BOM Rückgabe: true, wenn kein Fehler aufgetreten ist.
- QString writeUtf8TextFileEx(const QString &filePath, const QString &text, bool withBom) const Erweiterte Variante mit Fehlertext:
- Erfolg → leerer String
- Fehler → Fehlermeldung als Text (für eigene Fehlerbehandlung im Script)
Beispiel-Script
// Spalte "Betrag" mit Faktor 1.5 multiplizieren
const col = DataSheetObject.colNo("Betrag");
if (col >= 0) {
for (let r = 0; r < DataSheetObject.numRows(); r++) {
const oldValue = DataSheetObject.getDouble(r, col);
DataSheetObject.setDouble(r, col, oldValue * 1.5);
}
DataSheetObject.messageBox("Fertig", "Alle Beträge wurden skaliert.");
} else {
DataSheetObject.messageBox("Fehler", "Spalte 'Betrag' nicht gefunden.");
}
Display More
DSGVO-Hinweis und empfohlene organisatorische Maßnahmen
Die Nutzung von mod_pseudo kann dazu beitragen, personenbezogene Daten gemäß Art. 5, 25 und 32 DSGVO datenschutzgerecht für Entwicklungs-, Test-, Schulungs- oder Supportzwecke aufzubereiten. Bei Verwendung der Funktion Feldinhalte löschen (Anonymisieren) werden die entsprechenden Daten irreversibel entfernt und gelten damit als anonymisiert. Bei der Pseudonymisierung werden Daten deterministisch ersetzt, sodass weiterhin eine technische Zuordnung möglich sein kann, sofern der HMAC-Schlüssel erhalten bleibt. Der Schlüssel wird nicht im Programm abgelegt und verbleibt vollständig in der Verantwortung des Anwenders.
Für einen DSGVO-konformen Einsatz werden folgende organisatorischen Maßnahmen empfohlen:
- Trennung von Produktiv- und Testsystemen: Pseudonymisierte oder anonymisierte Daten sollten ausschließlich in Test- oder Entwicklungsumgebungen genutzt werden.
- Sichere Schlüsselverwaltung: Der verwendete HMAC-Schlüssel sollte geschützt, dokumentiert und gemäß Sicherheitsrichtlinien verwahrt oder nach Bedarf gelöscht werden.
- Protokollierung und Dokumentation: Verarbeitungsschritte sollten nachvollziehbar dokumentiert werden, insbesondere wenn Zuordnungsdateien erzeugt und aufbewahrt werden.
- Minimierungsprinzip beachten: Es sollten nur diejenigen Felder pseudonymisiert oder anonymisiert werden, die für den vorgesehenen Zweck erforderlich sind.
- Zugriffsbeschränkungen: Pseudonymisierte Daten sollten nur Berechtigten zugänglich gemacht werden.
Diese Hinweise ersetzen keine rechtliche Beratung, unterstützen jedoch bei der sicheren und verantwortungsvollen Nutzung von mod_pseudo in datenschutzrelevanten Kontexten.
Haftungsausschluss: Diese Software wird „wie geliefert“ bereitgestellt. Es wird keine Garantie für Vollständigkeit, Richtigkeit, Eignung für einen bestimmten Zweck oder Fehlerfreiheit übernommen. Jegliche Verantwortung für die Interpretation der Ergebnisse, die Weiterverarbeitung der erzeugten Daten oder die Einhaltung rechtlicher oder regulatorischer Anforderungen liegt beim Anwender. Der Hersteller übernimmt keine Haftung für direkte oder indirekte Schäden, Datenverlust oder wirtschaftliche Folgeschäden, die durch den Einsatz dieser Software entstehen können.
© 2025 psynetic Software. Alle Rechte vorbehalten.