Stellen Sie sich einen Wert vor, sagen wir "1234". Ich möchte diesen Wert einem anderen Wert zuordnen, sagen wir "abcd". Die Constraints:Zuordnung eines Wertes zu einem anderen Wert und zurück
- Die Länge des Zielwertes ist gleich dem Startwert
- Die Zuordnung eindeutig sein sollte. Z.B. 1234 sollte nur abcd und viseversa zugeordnet werden
- Der Mapping-Prozess sollte (sehr) schwer zu erraten sein. Z.B. mit 2 multipliziert sollte nicht zählt
- Die Abbildung
- Der Startwert eine ganze Zahl
- Der Zielwert kann von jeder Art sein
Dies sollte ein Grundalgorithmus sein, schließlich reversible werde ich schreibe es in Ruby, aber das ist hier egal.
ich entlang der folgenden Zeilen dachte:
SECRET = 1234
def to(int)
SECRET + int * 2
end
def fro(int)
(int - SECRET)/2
end
Offensichtlich verletzt Constraints 1 und 3
Das Fernziel ist Datensätze in der Datenbank anonymisieren. Ich könnte darüber nachdenken.
Kurze Frage beiseite: Wie stellen Sie sicher 1, wenn Sie 6 gleichzeitig sicherstellen wollen? – Joey
Stört es Sie, wenn jemand anderes hackt, welcher Algorithmus verwendet wird? Ein simples Hashing (wie Sie es vorschlagen) ist leicht zu knacken und beeinträchtigt die Anonymität der Daten. Je nach Ihrem Bedarf empfehle ich Ihnen, Einweg-Hashes zu betrachten. – dirkgently
Ja, es würde mich stören, wenn jemand den Algorithmus hackt. Ein bisschen wirklich. Und ich weiß, dass meine Lösung inakzeptabel ist, darum habe ich gefragt. Und ich glaube nicht, 1 und 6 Konflikt. Punkt 1 legt nur eine Einschränkung fest. Punkt 6 kann fallen gelassen werden. Mit Typ I bedeuten Integer, Char usw. – harm