Eindeutige ID generieren

Was gibt es für Funktionen um eine möglichst kurze eindeutige ID zu generieren, z.b. für ein Sessionmanagement.

Ich habe hier ein Sessionmanagement vorliegen, dass total billig ist, einfach irgendwelche Integers ab 1 hochgezählt und das ist natürlich nicht mal annähernd sicher. Nun suche ich nach Algorithmen um z.b. aus Uhrzeit in Millisekunden und IP-Adresse eine eindeutige Nummer zu generieren, die mit Sicherheit nicht zufällig ein anderer zu anderer Uhrzeit und anderer IP auch bekommt. Und natürlich sollte das irgendwie verdröselt werden, also ich will die beiden Werte nicht irgendwie hintereinanderhängen als String, sondern da soll dann eine Zeichenkette rauskommen die für eine URL taugt (evtl. base64 kodiert) und möglichst kurz ist.

Vielen Dank
MfG Bruno

Hi,

Algorithmen um z.b. aus Uhrzeit in Millisekunden und
IP-Adresse

Uhrzeit und Prozess-ID klingt IMHO besser.

Und natürlich sollte das irgendwie
verdröselt werden, also ich will die beiden Werte nicht
irgendwie hintereinanderhängen als String, sondern da soll
dann eine Zeichenkette rauskommen die für eine URL taugt
(evtl. base64 kodiert) und möglichst kurz ist.

Stichwort Hashwert. Suche nach einem Verfahren, das Deinen Wünschen entspricht. Natürlich kannst Du auch eine beliebige Verschlüsselung nehmen (z.B. liefert crypt() ein sehr kurzes Ergebnis), allerdings verlierst Du dadurch evtl. das Element der Eindeutigkeit.

Cheatah

Stichwort Hashwert.

Eine Hashfunktion muss ja auch keinen eindeutigen Wert zurückliefern. Wobei ich das Risiko gewissermassen eingehen kann, solang es nur alle 1Millionmal vorkommt oder so,keine Ahnung, falls es nichts gibt was wirklich eindeutig ist

Nimm doch MD5. Ich wette mit Dir, daß Du mir nicht 2 gleiche Hashwerte liefern kannst!

Gruß

J.

Nimm doch MD5. Ich wette mit Dir, daß Du mir nicht 2 gleiche
Hashwerte liefern kannst!

OK wo nehm ich den her? Zielsprache: java . Weisst du zufällig ob das im JDK vorhanden ist?

Oder kennste ne Seite wo der Algorithmus theoretisch beschrieben ist, damit ich ihn nachbaue.

Danke
Bruno

Nimm doch MD5. Ich wette mit Dir, daß Du mir nicht 2 gleiche
Hashwerte liefern kannst!

OK wo nehm ich den her? Zielsprache: java . Weisst du zufällig
ob das im JDK vorhanden ist?

Oder kennste ne Seite wo der Algorithmus theoretisch
beschrieben ist, damit ich ihn nachbaue.

Hi,
die Beschreibung von MD5 ist hier:
http://www.freesoft.org/CIE/RFC/1321/3.htm
Da Deine Zielsprache Java ist, würde ich Dir empfehlen, SHA-1 zu nehmen (wohl gleichwerttig zu MD5, obwohl ich es nicht beurteilen kann. Hier steht mehr darüber: http://www.networksorcery.com/enp/data/sha.htm).
Im JDK 1.2 ist eine JCA (Java Chriptograpy Architecture) enthalten, dort ist u.a. SHA-1 implementiert - Du mußt also das Rad nicht neu erfinden:
http://developer.java.sun.com/developer/technicalArt…

Gruß

J.

Hi Bruno,

es gibt unter NT ein Tool names uuidgen.exe, einfach auf Kommandozeile aufrufen. Dieses benutzt man in der Regel um die UUID’s fuer COM-Klassen zu generieren, die muessen ja weltweit eindeutig sein. Der Algorithmus setzt aus der MAC-Netzwerkadresse, Tickcount, Datum und Uhrzeit eine UUID zusammen (128-bit lang). Der Algorithmus stammt von der OMG (Open Management Group). Vielleicht findest Du ja diesen auf deren Internetportal.

Gruss Rolf