Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   Realdaten konsistent verwürfeln? (https://www.delphipraxis.net/190074-realdaten-konsistent-verwuerfeln.html)

stahli 26. Aug 2016 13:12

Realdaten konsistent verwürfeln?
 
Ich glaube es ja nicht, aber kennt jemand evtl. ein Tool für folgende Aufgabenstellung?


Ich habe diverse größere CSV´s in der Form

"KdNr";"Vorname";"Nachname";"KontoNr"
"01";"Klaus";"Müller";"2222"
"09";"Gerhard";"Müller";"3333"
"02";"Klaus";"Meier";"1111"
"03";"Bernd";"Lehmann";"4444"

"KontoNr";"Guthaben"
"1111","999"
"2222","9999"
"3333","99"
"4444","99999"

Jetzt möchte ich die Daten anonymisieren.
Ich könnte z.B. alle oder einige Spalten beider Dateien im Excel jeweils isoliert aufsteigend sortieren. Dann gäbe es keine Bezüge mehr zu den realen Datensätzen.
Lediglich die KontoNr als Bezug der Tabellen untereinander wäre noch vorhanden.

Optimaler Weise würde ich aber gern einen zeitlichen Stapel solcher Dateien "transferieren".
Ich habe diese Dateien nämlich monatlich vorliegen und würde daraus gern konsistente monatliche Testdaten generieren.

Das heisst, die csv´s müssten automatisiert zerlegt, mit Hilfe eines Dictionarys in Demodaten umgeschrieben und wieder in gleicher Form ausgegeben werden.

Dazu müsste pro Datei ein Schlüsselfeld angegeben werden und es müsste für jeden Monat konsistent aus
original
"KdNr";"Vorname";"Nachname";"KontoNr"
"01";"Klaus";"Müller";"2222"
nun
"01";"Gerhard";"Lehmann";"4444"

Erst wenn Klaus Müller wegen Heirat Klaus Maier heisst, sollte auch der Demo-Nachname geändert werden.


Kennt jemand Lösungen für so etwas?
Ich denke ja eher nicht, da das Ganze ja doch recht komplex werden kann.

Andererseits kann es Bedarf für solche "konsistenten" Anonymisierungen ja schon gelegentlich geben.

Jumpy 26. Aug 2016 13:47

AW: Realdaten konsistent verwürfeln?
 
Habe gerade ein ähnliches Problem, aber auf Datenbank ebene, nicht in einer Datei.
Ich plane, z.B. einmalig eine Vornamens-Nachschlage-tabelle zu machen ala:

SQL-Code:
Create Table VornamenNachschlageTabelle
Select Distinct Rownum as ID, Vorname From Tabelle
Where Rownum<=500
Das wäre dann sowas wie bei dir das Dictionary.

Dann, um das reproduzierbar zu halten, wird anhand der Personalnummer aus dieser Tabelle ein Name gezogen, ungefähr so:

SQL-Code:
Update Personaltabelle P
Set P.Vorname= (Select V.Vorname von VornamenNachschlageTabelle V Where V.ID=MOD(Personalnummer,500))
Analog dann bei Nachname, Strasse usw.

Keine Ahnung ob es da nicht schlauere Lösungen gibt um Testdaten zu generieren. Den Namenswechsel bei Hochzeit, bekommt man so in den Testdaaten nicht mit, aber das ist auch nicht nötig für uns.

mensch72 26. Aug 2016 13:59

AW: Realdaten konsistent verwürfeln?
 
Wir nutzen simpel einen MD5 Hash zur Anonymisierung...

Also würde ich einen MD5 aus ("KdNr";"Vorname";"Nachname") berechnen und dann habe ich im Test/Demo-CSV nur noch "HASH";"KontoNr" :)

stahli 26. Aug 2016 14:10

AW: Realdaten konsistent verwürfeln?
 
Die Demodaten will ich ggf. weiter geben können.
Es sollen also umfangreiche echte Daten sein, aber ohne realen Personen-Bezug (originale Form der Dateien und innere - auch zeitliche - Konsistenz).

Jumpy 26. Aug 2016 14:28

AW: Realdaten konsistent verwürfeln?
 
Zitat:

Zitat von mensch72 (Beitrag 1345837)
Wir nutzen simpel einen MD5 Hash zur Anonymisierung...

Also würde ich einen MD5 aus ("KdNr";"Vorname";"Nachname") berechnen und dann habe ich im Test/Demo-CSV nur noch "HASH";"KontoNr" :)

War auch unser erster Ansatz. Leider wollte der Kunde, das auch bei den Testdaten die Vornamen noch wie Vornamen aussehen usw.

mensch72 26. Aug 2016 14:38

AW: Realdaten konsistent verwürfeln?
 
aus den 16Bytes MD5 kann man auch 2x 8Bytes machen und eine sagen wir CRC16 darüber rechen umd dann diese nochmal per Modulo auf die Anzahl der verfügbaren Records zu begrenzen... dann bekommt man 2x einen "Index", welchen Vornamen und welchen Nachnamen man jeweils kombinieren soll.

Das sollte ausreichend flexibel sein, um genug anonyme Verwürfelung der Klarnamen zu bekommen... vorwärts eindeutig zu bestimmen, aber rückwärts nicht rückrechenbar

Mavarik 26. Aug 2016 14:43

AW: Realdaten konsistent verwürfeln?
 
Zitat:

Zitat von stahli (Beitrag 1345843)
Die Demodaten will ich ggf. weiter geben können.
Es sollen also umfangreiche echte Daten sein, aber ohne realen Personen-Bezug (originale Form der Dateien und innere - auch zeitliche - Konsistenz).

Leg dir einfach eine Liste mit Vornamen und Nachnamen an und stelle diese per Random zu neuen Namen zusammen...

Original

[0] Petra;Putzig;Gartenstraße 7;53111; Bonn
[1] Rudi;Rastlos;Hofgarten 42;52223 Stolberg;

Daraus 5 Listen machen

Dann 5x Random; Randomwerte 1-5 müssen unterschiedlich sein.
Randomwert verbraucht, aus der Liste werfen..

So hast Du n Adressen aber keine ist real...

Namenloser 26. Aug 2016 21:17

AW: Realdaten konsistent verwürfeln?
 
Zitat:

Zitat von mensch72 (Beitrag 1345851)
Das sollte ausreichend flexibel sein, um genug anonyme Verwürfelung der Klarnamen zu bekommen... vorwärts eindeutig zu bestimmen, aber rückwärts nicht rückrechenbar

Das kann man sehr leicht mit einer Wörterbuchattacke zurückrechnen. Bitte auf keinen Fall MD5 oder sonstige Hashes zur „Anonymisierung“ verwenden! Außer du verwendest einen zufälligen, ausreichend langen Salt, den du anschließend wegschmeißt.

BUG 26. Aug 2016 22:17

AW: Realdaten konsistent verwürfeln?
 
Da gabs doch auch mal was aus der c't.

Mavarik 27. Aug 2016 11:36

AW: Realdaten konsistent verwürfeln?
 
Zitat:

Zitat von Namenloser (Beitrag 1345880)
Zitat:

Zitat von mensch72 (Beitrag 1345851)
Das sollte ausreichend flexibel sein, um genug anonyme Verwürfelung der Klarnamen zu bekommen... vorwärts eindeutig zu bestimmen, aber rückwärts nicht rückrechenbar

Das kann man sehr leicht mit einer Wörterbuchattacke zurückrechnen. Bitte auf keinen Fall MD5 oder sonstige Hashes zur „Anonymisierung“ verwenden! Außer du verwendest einen zufälligen, ausreichend langen Salt, den du anschließend wegschmeißt.

Es geht nicht um Hashing.... Es geht um ganz normal lesbare Demo-Daten! :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz