2016-12-01 4 views
0

Nur Java unter Verwendung von 8, ohne anderen Bibliotheken, ich brauche ein eindeutiges Token zu erzeugen, die in 5 Minuten ablaufen, sondern die Erstellungszeit auf DB zu retten, würde Ich mag die Schöpfung speichern Zeit innerhalb des Tokens, um es später zu dekodieren, wenn es verwendet wird.generieren einzigartige Token mit Erstellungszeit innerhalb

Wie könnte ich es tun?

+1

Nehmen sie die Erstellungszeit und fügen sie eine MAC, um es so, dass es nicht leicht geändert werden kann. Dies ist jedoch nicht eindeutig, wenn Sie mehr als ein Token pro Millisekunde ausgeben. Wenn Sie das benötigen, können Sie einen Zählerwert hinzufügen. – Henry

+1

Dies scheint eher ein konzeptionelles Problem als ein Programmierproblem zu sein. Sie können die Erstellungszeit über 'System.currentTimeMillis()' abrufen. Was Sie mit diesem 'long' machen, hängt von der Art Ihres Tokens und von der Art der Sicherheit ab, die Sie benötigen. Oder wie Sie die Korrektheit eines Tokens überprüfen. Ich denke, da muss * noch * ein Datenbankspeicher sein, oder? – Holger

Antwort

0

dies ist die Antwort von Ihnen

String token = UUID.randomUUID().toString() + ":" + System.currentTimeMillis(); 
String[] t = token.split(":"); 
String token_time = t[1]; 

Frage Dann können Sie tun, was immer Sie mit dem token_time Variable wollen, es hilft

0

Sie können einfach einen Token generieren besteht aus zwei Teilen, die verkettet:

  1. der erste Teil ein UUID sicher sein, das Token einmalig ist; UUID reference
  2. der zweite Teil einen Zeitstempel, die Sie später entschlüsseln kann
+1

Könnte V1 der UUID-Spezifikation verwenden, enthält den Zeitstempel bereits! ;) – Jite

+1

Hört sich einfach an, aber wie verifiziert man die Korrektheit des Tokens? Wenn Sie dies tun, indem Sie das vollständige Token speichern, haben Sie effektiv die Zeit gespeichert, die das OP vermeiden möchte. – Holger

Verwandte Themen