# Unique SessionID/Challange erzeugen



## ArtjomZab (16. Apr 2010)

Hallo,

ich benötige eine unique Zeichenkette zu Verschlüsselungszwecke. Sie soll Bestandteil eines Verschlüsselungsalgorithmus sein. Ich dachte dabei einfach eine HTTPSession zu generieren und diese zu nutzen nur bin ich mir nicht sicher ob sie die Erwartungen an einen Verschlüsselungsalgorithmus erfüllt. Ich dachte daran dass die ID schon so 128bit lang sein soll.
Ich hoffe ich könnt mir helfen.
mfg


----------



## XHelp (16. Apr 2010)

Warum nicht einfach Random benutzen? Da kannst du ja soviel generieren wie du willst. Du könntest es noch flexibeler halten: Generierst eine zufällige Anzahl an Buchstaben, Zahlen, wasauchimmer, packst es in ein String und bildest den MD5-Hash davon, dann hast du auch immer 128 bit.


----------



## ArtjomZab (17. Apr 2010)

```
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128);
SecretKey skey = kgen.generateKey();
```

und dann einfach skey.toString();
oder als hex ausgeben da ich das ganze aber im http übertrage möchte wäre string wohl besser oder nicht


----------



## Artjomzab (17. Apr 2010)

hm das mit dem toString klappt grade nicht so ganz^^


----------



## XHelp (17. Apr 2010)

Also toString wird dir nichts bringen, weil du dann nur Klasse@HashCode des Objektes bekommen würdest


----------



## ArtjomZab (17. Apr 2010)

also es muss ja auch nicht unbedingt AES sein ich brauche einfach iwie sowas wie eine SessionID die unique ist

gibts da nicht was fertiges wie import java.util.UUID; (UUID.randomUUID()

aber warum wird dann noch von SecureRandom unterschieden?


----------



## ArtjomZab (17. Apr 2010)

Das hier erklärt für mich eig alles HOWTO: Using Java's SecureRandom (java.security.SecureRandom) - Mark S. Kolich


----------



## XHelp (17. Apr 2010)

Warum nimmst du dann nicht den Vorschlag aus meinem 1. Posting?

Ja, auch UUID generiert dir irgendwas (zwar eine 16byte Zahl, aber vorerst egal). Kannst also auch die nehmen.

Wo wird von SecureRandom unterschieden? Meinst du Random <> SecureRandom? Wenn ja, dann:
Zufallszahlen zu bekommen ist nicht gerade eine triviale Aufgabe, sofern du in deinem Rechner keine radioaktive Isotope hast. Also alles was du vom Rechner bekommst sind eigentlich nur mehr oder weniger Pseudozufallszahlen. Je mehr zufällig die Zahl sein muss, desto zeitaufwändiger und rechenintensiver ist die Berechnung. Wenn du z.B. eine Farbe generieren willst, brauchst du das nicht mit SecureRandom machen.


----------

