トークンはユニークにしたい。(衝突は知らない・・・) トークンはURLセーフにしておいた方が良い。 トークン自体はユーザーに教えるために出力しないといけないので復号できなければならないので、DBに保存する際は暗号化。 セッションやKVSに一時的に保持するような長期間使わないようなもの(有効期限付きURLアクセスのトークンとか)は暗号化はしなくても良いと思う。 一度きりの画面表示の場合はハッシュ化したものを保存して付け合わせれば良いので暗号化は不要です。 $token = hash_hmac('sha1', uniqid(bin2hex(random_bytes(20))), 'key'); // ここで$tokenを暗号化して$encrypted_tokenを作る処理を記述 $token_pair['token'] = $token; $token_pair['encrypt_token'