ホームページ > バックエンド開発 > PHPチュートリアル > PHP_PHP チュートリアルでランダムなパスワードを生成する 3 つの方法のまとめ

PHP_PHP チュートリアルでランダムなパスワードを生成する 3 つの方法のまとめ

WBOY
リリース: 2016-07-21 15:34:17
オリジナル
816 人が閲覧しました

PHP を使用したアプリケーションの開発、特に Web サイト プログラムでは、 ランダムなパスワードの生成 が必要になることがよくあります。たとえば、ユーザーが登録するときにランダムなパスワードが生成され、ユーザーがパスワードをリセットするときにランダムなパスワードが生成されます。ランダムなパスワードは固定長の文字列です。ここでは、参考のためにランダムな文字列を生成するいくつかの方法を集めました。

方法 1:

1. 33 ~ 126 のランダムな整数を生成します (例: 35)。

2. 35 を対応する ASCII コード文字に変換します (#

に対応する 35 など)。

3. 上記の手順 1 と 2 を n 回繰り返して、n 桁のパスワードに接続します

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


コードをコピー コードは次のとおりです:
function create_password($pw_length = 8)
{
$randpwd = '';
for ($i = 0; $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 番目を繰り返します。 step 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 から $length 要素をランダムに選択します

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
$keys = ($chars, $length) 内の $length 配列要素のキー名をランダムに選択します;
$password = '';
for($i = 0; $i < $length; $i++)
{
// $length 配列要素を文字列に連結します
$password .= $chars[$keys[ $i ]];
}
return $password;
}



時間効率の比較

以下の PHP コードを使用して、6 桁のパスワードを生成するための上記 3 つのランダムなパスワード生成関数の実行時間を計算します。次に、時間効率を評価します。簡単な比較を行います。

コードをコピー
コードは次のとおりです: function getmicrotime()
{
list($usec, $sec) =explode(" ",microtime()); ((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 秒
方法 1 と方法 2 の実行時間は類似していることがわかります。 、方法 3 の実行時間はわずかに長くなります。
原文: http://www.ludou.org/how-to-create-a-password-generator-using-php.html

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