2016-05-30 7 views
0

Ich möchte ein Token (Gültigkeit in der Sekunde) für 20 Jahre generieren. So Gesamtzahl der zweiten in 20 Jahren sind: 631152000. Hier ist ein Token-Erzeugungs-Code:Wie Nummer der Sekunde in Variable speichern in Java

long tokenLifetInSecond=631152000; 
    long expiryTime = System.currentTimeMillis(); 
    expiryTime += 1000L * tokenLifetimeInSecond; 

So das Ergebnis ExpiryTime = 2095766040489. Ist die Verwendung von long ein sicherer Wert, da 2 Milliarden Datensätze gespeichert werden können?

+0

Aus Neugier: welche Art von System arbeiten Sie, dass "Token" gültig für 20 Jahre erfordert? – GhostCat

+0

Hypotheken vielleicht? –

+0

Gut Token wird in einem Standalone-Terminals für den Zugriff auf einige Dienste verwenden. In einfachen möchte ich ein Leben Zeit Token –

Antwort

0

Long.MAX_VALUE: 9223372036854775807

+0

Danke für Update, obwohl Limit ist nur 2 Milliarden. –

+0

es ist mir ein Vergnügen, ja, es kann – Moolerian

0

Sie können Big Integer in Java verwenden oder diesen Wert in String speichern.

+0

gut API benötigt, um Wert in lange zu geben. –

0

Der größte Wert darstellbaren als long ist:

9.223.372.036.854.775.808

Jetzt ist tokenLifetimeInSeconds

631.152.000

und in Millisekunden, die

ist

631,152,000,000

die leicht in eine long passt. Ihr Wert geliefert

2.095.766.040.489

Wird auch tun.

Ich würde sagen, dass Ihr Token-Verschlüsselungsschema in Ordnung sein wird. In der Tat ist Ihr Code wahrscheinlich bis zum Jahr 292,277,026,576 AD in Ordnung.

Referenz:

+0

Vielen Dank für mehr Aufklärung. Ich habe vergessen, wo ich gelesen habe, lange Grenze ist 2 Milliarden oder speichern bis zu 2 Milliarden, so dass verwirrt. Danke an alle –

+0

@ user526206 - Die ~ 2 Milliarden Grenze ist für 32 Bit vorzeichenbehaftete Ganzzahlen; d.h. "int" in Java. –

+0

Sehr interessant. Token Ablauf überprüft von Feder Sicherheit hoffe, sie haben etwas, das zu vermeiden. Ich werde den Quellcode überprüfen. –

Verwandte Themen