PHP_PHP チュートリアルを使用してランダムなパスワードを生成する 4 つの方法の例

WBOY
リリース: 2016-07-13 17:42:55
オリジナル
686 人が閲覧しました

PHP を使用してアプリケーション、特に Web サイト プログラムを開発する場合、多くの場合、ランダム パスワードを生成する必要があります。たとえば、ユーザーがランダム パスワードを生成するように登録する場合、パスワードをリセットするためにランダム パスワードも生成する必要があります。

ランダムなパスワードは固定長の文字列です。ここでは、参考のためにランダムな文字列を生成するいくつかの方法を集めました。
方法 1:
1. 33 ~ 126 のランダムな整数 (例: 35、
2) を、#
に対応する 35 などの対応する ASCII 文字に変換します。上記の手順 1 と 2 を n 回繰り返します。 、n 桁のパスワードに連結されます

このアルゴリズムは主に 2 つの関数を使用します。mt_rand (int $min, int $max) 関数はランダムな整数を生成するために使用されます。ここで、$min – $max は ASCII コードの範囲です。たとえば、ASCII コード表の 97 ~ 122 ビットは、英語の文字 a ~ z に対応します。詳細については、ASCII コード表を参照してください。 $ascii) 関数は、対応する整数 $ascii を対応する文字に変換するために使用されます。

function create_password($pw_length = 8)
{
$randpwd = ;
for ($i = 0; $i < $pw_length; $i )
{
$randpwd .= chr(mt_rand (33, 126));
}
return $randpwd;
}
// この関数を呼び出し、長さパラメータを渡します $pw_length = 6
echo create_password(6);
?>

方法 2:
1. a – z、A – Z、0 – 9、およびいくつかの特殊文字を含む文字列 $chars を事前設定します
2. $chars 文字列内の文字をランダムに選択します
3. 2 番目のステップを n 回繰り返します。長さ n が利用可能です
functiongenerate_password( $length = 8 ) {
//パスワード文字セット、必要な文字を追加できます
$chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*( )-_ []{}<>~` =,.;:/?|;
$password = ;
for ( $i = 0; $i {
// 2 つあります文字を取得する方法
// 1 つ目は、substr を使用して $chars 内の任意の文字をインターセプトすることです
// 2 つ目は、文字配列 $chars の任意の要素を取得することです
// $password .= substr( $chars, mt_rand (0, strlen($chars) - 1), 1);
$password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
}
return $password;
}
?>

方法 3:
1. a – z、A – Z、0 – 9、およびいくつかの特殊文字を含む文字配列 $chars をプリセットします。
2. array_rand() を使用して配列 $ からランダムに選択します。 chars の要素の長さ
3. 取得したキー名配列 $keys に従って、配列 $chars から文字を取り出し、文字列を連結します。この方法の欠点は、同じ文字が繰り返し取得されないことです。
次のようにコードをコピーします:
function make_password($length = 8)
{
//パスワード文字セット、必要な文字を追加できます
$chars = array(a, b, c, d 、e、f、g、h、
i、j、k、l、m、n、o、p、q、r、s、
t、u、v、w、x、y、z、A、B 、C、D、
E、F、G、H、I、J、K、L、M、N、O、
P、Q、R、S、T、U、V、W、X、Y、Z 、
0、1、2、3、4、5、6、7、8、9、!、
@、#、$、%、^、&、*、(、)、-、_、
[、 ] , {, }, <, >, ~, `, , =, ,,
., ;, :, /, ?, |);
// $chars 内の $length 配列要素のキー名をランダムに選択します
$keys = array_rand($chars, $length);
$password = ;
for($i = 0; $i {
// $length の配列要素を文字列に連結します String
$パスワード .= $chars[$keys[$i]];
}
return $password;
}
?>

方法 4:
この方法は、この記事が Blue Ideal によって再版された後に採用されました。ネットユーザーが提供するメソッドはアルゴリズムがシンプルでコードが短いため、md5() 関数の戻り値には文字と数字しか含まれていませんが、それでも優れたメソッドです。アルゴリズムのアイデア:
1. time() は現在の Unix タイムスタンプを取得します
2. 最初のステップで取得したタイムスタンプを md5() で暗号化します
3. 2 番目のステップの暗号化された結果の n ビットをインターセプトして、目的の結果のパスワードを取得します
function get_password( $length = 8 )
{
$str = substr(md5(time()), 0, 6);
return $str;
}
?>

時間効率の比較
以下の PHP コードを使用して、6 桁のパスワードを生成するための上記 4 つのランダム パスワード生成関数の実行時間を計算し、その時間効率を簡単に比較します。
function getmicrotime()
{
list($usec, $sec) =explode(" ",microtime());
return ((float)$usec (float)$sec);
}
// 記録開始時刻
$time_start = getmicrotime();
// ここに実行する PHP コードを記述します。例:
// echo create_password(6);
// 記録終了時刻
$time_end = getmicrotime() ;
$time = $time_end - $time_start;
//合計実行時間を出力します
echo "実行時間 $time 秒";
?>

最終結果は次のとおりです:
方法 1: 9.8943710327148E-5 秒
方法 2: 9.6797943115234E-5 秒
方法 3: 0.00017499923706055 秒
方法 4: 3.4093856811523E-5 秒

方法 1 と方法 2 の実行時間は似ており、方法 4 の実行時間が最も短いことがわかります。方法 3 の実行時間はわずかに長くなります。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/486017.html技術記事 PHP を使用してアプリケーション、特に Web サイトのプログラムを開発する場合、多くの場合、ランダムなパスワードを生成する必要があります。たとえば、ユーザーがランダムなパスワードを生成するように登録する場合、パスワードをリセットするためにランダムなパスワードも生成する必要があります。 何でも...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!