2014-09-03 7 views
6

Wie erstelle ich eine gültige UUID aus einem String? Der String allein ist nicht das, wonach ich suche. Ich suche eher nach einer Hash-Funktion, die einen beliebigen String in eine gültige UUID umwandelt.Der einfachste Weg in Java, um String in UUID umzuwandeln

+1

Nun, was sind Ihre Anforderungen um Einzigartigkeit usw.? Sie könnten * einfach 'hashCode' aufrufen, um ein' int' zu erhalten, und dann eine UUID basierend darauf erstellen ... aber Sie würden offensichtlich viel mehr Kollisionen als nötig bekommen. –

+2

Was ist in der Zeichenfolge überhaupt relevant für eine UUID? Sie können auch einfach eine neue UUID generieren und eine Mapping-Tabelle irgendwo aufbewahren. Oder möglicherweise ['UUID.nameUUIDFromBytes (string.getBytes())'] (http://docs.oracle.com/javase/7/docs/api/java/util/UUID.html#nameUUIDFromBytes (byte [])) . – EJP

+0

Das sieht wie ein XY-Problem aus. – Raedwald

Antwort

7

In der Java-Core-Bibliothek gibt es java.util.UUID.nameUUIDFromBytes(byte[]).

Ich würde es nicht empfehlen, weil es UUID 3 ist, die auf MD5 basiert, eine sehr kaputte Hash-Funktion. Sie wären besser dran, eine Implementierung von UUID 5 zu finden, die auf SHA-1 basiert (besser aber auch sort of broken).

+0

Das ist noch besser - ich schlug vor, es manuell zu tun. – boky

+0

alle gleichwertig? – Abhijeet

+0

@Abhijeet Ich würde es nicht wissen. Vielleicht möchten Sie das als separate Frage stellen. –

Verwandte Themen