Anonymisierung von Namen
atreiju
- php
0 T-Rex0 Der Martin0 T-Rex0 Der Martin0 Encoder0 T-Rex
0 Martin Rettberg
Hallöchen,
ich möchte Namen, die in einer Liste stehen, anonymisieren, aber trotzdem noch statistisch erfassbar lassen (wie oft kommt Herr "Hans Müller" in der Liste vor).
Ich denke, dafür ist eine Hash-Funktion sinnvoll?
Kennt jemand eine einfache Hash-Funktion, die in diesem Fall sinnvoll ist?
Gibt es bereits etwas in PHP eingebaut? Oder eine fertige Funktion, die ich dafür nehmen könnte?
Viele Grüße, Atreiju
Moin,
die Daten sollten in ihrem Ursprungszustand gespeichert werden.
Als Ausgabe kannst du die durch jegliche Hashfunktionen jagen wie du willst. Somit ist die Ausgabe verschleiert, du kannst aber nach wie vor noch Berechnungen mit den Namen vornehmen.
Gruß
Hash ist doch schon legalisiert?
T-Rex
Hallo,
die Daten sollten in ihrem Ursprungszustand gespeichert werden.
in den meisten Fällen würde ich zustimmen, aber ... Es kommt auf den Zweck an.
Wenn es wirklich nur um eine statistische Auswertung geht -und so habe ich atreiju verstanden- dann ist es nicht notwendig, die Namen im Original zu speichern. Ein Hash, meinetwegen getrennt auf Vor- und Nachnamen, ist ebenso eindeutig wie der Name selbst und kann für statistische Zwecke herangezogen werden.
Nur eins ist dann nicht mehr möglich: Aus 38E2AF70C346D711F64C ablesen, dass "Meier" der häufigste Name ist.
Die Frage ist also tatsächlich: Was soll alles mit den Namen passieren?
Nur eine Zählung? Dann würde ich ein PHP-Array vorschlagen und die Namen als Key verwenden, die Häufigkeit als Wert.
function RegisterName($name, $list)
{ if (isset($list[$name])
$list[$name]++;
else
$list[$name] = 1;
}
So ist jeder Name aus dem Kontext gerissen und damit anonymisiert, erst recht wenn man das tatsächlich nach Vor- und Nachname getrennt zählt.
Hash ist doch schon legalisiert?
Was meinst du damit?
Ciao,
Martin
Da hast du recht. Meine Erfahrung sagt mir jedoch, dass man lieber mehr als weniger speichern sollte. Irgendwann kommt der Kunde/Chef an und fragt "können wir eigentlich ermitteln welcher Nachname der häufigste ist?". Dann kommt ein klares nein mit verweis auf Dokumentation xy. Trotzdem gibt es eine Enttäuschung.
Ansonsten hast du natürlich recht.
Gruß
Hash ~ Hasch *ein Wortspiel*
T-Rex
Hi,
Da hast du recht. Meine Erfahrung sagt mir jedoch, dass man lieber mehr als weniger speichern sollte. Irgendwann kommt der Kunde/Chef an und fragt "können wir eigentlich ermitteln welcher Nachname der häufigste ist?". Dann kommt ein klares nein mit verweis auf Dokumentation xy. Trotzdem gibt es eine Enttäuschung.
daher mein Alternativvorschlag mit der Häufigkeits-Liste und Klartextnamen.
Dann lautet die Antwort: "Klar, Chef! *klick, klick, klick* Hier, ich hab's: Meier. 26mal."
Nur wie die 26 Meiers alle mit Vornamen heißen, weiß man dann nicht mehr. Aber braucht man das? ;-)
Ciao,
Martin
Irgendwann kommt der Kunde/Chef an und fragt "können wir eigentlich ermitteln welcher Nachname der häufigste ist?".
Wenn der Wunsch wirklich ist, auch für die interne Datenhaltung keinen Namen mehr erkennbar zu haben, dann muss dem Kunden klar sein dass sowas dann nicht mehr zu ermitteln ist.
Sowas sollte man im Voraus ansprechen, man könnte in beiden Fällen spätere Probleme bekommen.
Das kann man noch so oft ansprechen. Am Ende guckt der Kunde doch doof aus der Wäsche oder der Chef. Dann will wieder niemand was von den Warnungen gehört haben.
Gruß
Vorausdenkender
T-Rex
Hi,
Ich denke, dafür ist eine Hash-Funktion sinnvoll?
jop, echo -n "Hans Müller" | md5sum
wird immer den selben Hash erzeugen.
In der Tabelle steht dann allerdings nicht "Hans Müller existiert 20x", sondern "der Hash 977b3b5ffc17536b4f515bb90890df6a existiert 20x".
Beachte auch, dass die kleinste Abweichung (Klein-/Großschreibung, ue statt ü, ...) für einen komplett anderen Hash sorgt.
Gibt es bereits etwas in PHP eingebaut? Oder eine fertige Funktion, die ich dafür nehmen könnte?
Bestimmt.
Martin