2016-12-01 11 views
0

他のライブラリを持たないJava 8のみを使用すると、5分で期限切れとなる固有のトークンを生成する必要がありますが、作成時間をDBに保存するのではなく、それが使用されたときにそれを後でデコードするためにトークンの中の時間。作成時間内に固有のトークンを生成する

どうすればいいですか?

+1

作成時間を取って、簡単に変更できないようにMACを追加します。ただし、1ミリ秒に1つ以上のトークンを発行すると、これは一意ではありません。必要な場合は、カウンター値を追加することができます。 – Henry

+1

これはプログラミングの問題ではなく概念的な問題のようです。 'System.currentTimeMillis()'を使って作成時刻を取得することができます。その「長い」は、トークンの性質と必要なセキュリティの種類によって異なります。トークンの正当性を検証する方法。私は、まだデータベースストレージになる*があると思いますか? – Holger

答えて

0

これは、あなたが次にあなたはそれが役に立てば幸いあなたはtoken_time変数 でほしいと思う何ができる

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

を質問の答えです

0

あなたは、単に連結されている2つの部分から構成トークンを生成することができます

  1. 最初の部分のトークンが一意であることを確認するためのUUIDを。あなたがデコードすることができUUID reference
  2. 第二部のタイムスタンプは、後
+1

UUID仕様のV1を使用でき、すでにタイムスタンプが入っています! ;) – Jite

+1

音はシンプルですが、トークンの正確性をどのように確認していますか?完全なトークンを保存することでそうした場合、OPが避けたい時間を効果的に保存しています。 – Holger

関連する問題