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

PHP_PHP チュートリアルでランダムなパスワードを生成するいくつかの方法

WBOY
WBOYオリジナル
2016-07-21 15:32:25873ブラウズ

ランダムなパスワードは固定長の文字列です。ここでは、参考のためにランダムな文字列を生成するいくつかの方法を集めました。

方法 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 文字列内の文字をランダムに選択します。 2 番目のステップを n 回繰り返して、長さ n のパスワードを取得します

コードをコピーします コードは次のとおりです:
functiongenerate_password( $length = 8 ) {
// パスワード文字セット、追加できます必要なものを何でも入力してください;
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) ];
方法 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 = array_rand($chars, $) 内の $length 配列要素のキー名をランダムに選択しますlength);

$password = '';
for($i = 0; $i < $length; $i++)
{
// $length 配列要素を文字列に連結します
$password .= $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()); ((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.40 93856811523E-5秒

方法が見れます1 つと方法 方法 2 の実行時間はほぼ同じですが、方法 4 の実行時間が最も短く、方法 3 の実行時間がわずかに長くなります。



http://www.bkjia.com/PHPjc/322827.html

www.bkjia.com

http://www.bkjia.com/PHPjc/322827.html技術記事ランダムなパスワードは固定長の文字列です。ここでは、参考のためにランダムな文字列を生成するいくつかの方法を集めました。 方法 1: 1. 33 – 126 に 1 つを生成します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。