Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : eindeutige id aus string ?



CYP
04-07-2003, 14:44
hat jemand eine idee wie man aus einem unterschiedlich langen string
(name vorname geburtstdatum) eine eindeutige max. 9 stellige id (integer) zaubert ?

eine einfach zufallszahl reicht nicht -> sie muss reproduzierbar sein

also
hans kunz 19.03.1984 = 033524534 oder so


hätt ich mal auf mama gehört und in mathe besser aufgepasst :(

pitu
07-07-2003, 06:57
Also, eindeutig 9 Zeichen integer, ist etwas schwierig. Ueberleg mal, Mit geburtstag zusammen ist jeder deiner Strings eindeutig. Reduzierst du dies jetzt auf neun Stellen, wird die Sache schon komplizierter, ich meine, ich heisse Thorsten, das sind schon 8 Stellen. lass noch jemand anderen Thorsten heissen....

Nun reduzierst du den "Wert" einer jeden stelle von 24 (Alphabet ohne umlaute) +24 (Gross kleinschreibung) +2 (- fuer doppelnamen . fuer Datum) +10 (0-9) = 60 moeglichen Wertzuweisungen auf 9 (0-9) Wertzuweisungen

probier mal folgendes:


pitu@local:~> echo "heinz richter" | md5sum
1ed7565f6a24b8a352251a9e44624dd0 -
pitu@local:~> echo "heinz richter" | sha1sum
418bd72d0b3598fcaf028495bf599a623b0e2db9 -
pitu@local:~>


Das ist eindeutig, zumindest fast, es gibt immer noch eine restwahrscheinlichkeit die bei md5 soweit ich mich entsinne bei 1 zu 14 Mio liegt.

gruss,
pitu

CYP
07-07-2003, 21:27
das mit md5 hab ich mir auch schon überlegt ...das problem ist aber das die
id ein reiner integer sein muss und max 9 stellen hab darf
(ka was die entwickler da geritten hat :) )

ich habs mal mit string-crc versucht

man kann da variable integers ausgeben lassen (mit 24 sind max 9 zahlen

use String::CRC;

print crc(dfstbsrdztsrezsfzr,29);

-> dann ist die grösste zahl 536870911

das ist zwar ganz sicher nicht 100% eindeutig aber den ersten test mit 1500 user hats erfolgreich bestanden :)