重複を最小限に抑えたランダムな 5 文字の生成
重複を最小限に抑えたランダムな 5 文字の文字列を作成するには、最も効果的なアプローチの 1 つは次の方法を利用します。 PHP の機能と巧妙なテクニックを組み合わせたものです。解決策を詳しく見てみましょう:
md5 と rand の使用
$rand = substr(md5(microtime()),rand(0,26),5);
このメソッドは、md5 ハッシュ関数を使用して、タイムスタンプから 32 文字の文字列を生成します。 substr と rand を使用すると、ランダムな 5 文字のサブセクションが抽出され、重複確率の低い文字列が得られます。
shuffle と array_rand を使用する
$seed = str_split('abcdefghijklmnopqrstuvwxyz'
.'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
.'0123456789!@#$%^&*()'); // and any other characters
shuffle($seed); // probably optional since array_is randomized; this may be redundant
$rand = '';
foreach (array_rand($seed, 5) as $k) $rand .= $seed[$k];
ここでは、事前定義された文字セット ($seed) がランダムにシャッフルされます。次に、array_rand を使用して、シャッフルされた配列から 5 つの文字がランダムに選択され、文字の多様な分散が保証されます。 5){ $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; $base = strlen($charset); $結果 = ''; $now =explode(' ', microtime())[1]; while ($now >= $base){ $i = (int)$now % $base; $result = $charset[$i] 。 $結果; $now /= $base; } return substr(str_repeat($charset[0], $len) . $result, -$len); }
この関数は、現在時刻からマイクロ秒を利用して、ランダムな文字列を段階的に生成します。その結果、後続の世代ごとに、ますます固有の文字列が得られます。ただし、ソルティングやトークン生成などの暗号化目的で使用される場合、他の方法よりも予測可能性が高いことは注目に値します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3