私は Adam Griffiths の Authentication Library for CodeIgniter を使用しており、ユーザーモデルを微調整しています。
彼がトークンを生成するために使用する生成関数に出くわしました。
彼が好むアプローチは、random.org の値を参照することですが、私はそれは不必要だと考えました。私は 20 文字の長さの文字列をランダムに生成する彼のフォールバック アプローチを使用しています。
$length = 20;
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$token = '';
for ($i = 0; $i < $length; $i++) {
$token .= $characters[mt_rand(0, strlen($characters)-1)];
}
次に、ソルトを使用してこのトークンをハッシュします (さまざまな関数のコードを組み合わせています)。
sha1($this->CI->config->item('encryption_key').$str);
塩漬けハッシュを介してトークンを実行する理由があるかどうか疑問に思っていましたか?
文字列を単にランダムに生成するのは、ランダムなパスワードを作成するための単純な方法であると読みましたが、sh1 ハッシュとソルトは必要ですか?
注: https://www.grc.com/passwords.htm (63 個のランダムな英数字)から暗号化キーを取得しました。