ホームページ  >  記事  >  バックエンド開発  >  PHP でランダムなパスワードを生成する 4 つの方法とパフォーマンスの比較_PHP チュートリアル

PHP でランダムなパスワードを生成する 4 つの方法とパフォーマンスの比較_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:54:58859ブラウズ

PHPでランダムなパスワードを生成する4つの方法とパフォーマンスの比較

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

PHP でランダムなパスワードを生成する 4 つの方法とパフォーマンスの比較_PHP チュートリアル

方法 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 を対応する文字に変換します。

ソースプリントを表示しますか?

リーリー

方法 2:

1. a – z、A – Z、0 – 9、およびいくつかの特殊文字を含む文字列 $chars をプリセットします

2. $chars 文字列からランダムな文字を選択します

3. 2 番目のステップを n 回繰り返して、長さ n のパスワードを取得します

ソースプリントを表示しますか?

リーリー

方法 3:

1. a – z、A – Z、0 – 9、およびいくつかの特殊文字を含む文字配列 $chars をプリセットします

2. array_rand() を使用して、配列 $chars から $length 要素をランダムに選択します

3. 取得したキー名配列$keysに従って、配列$charsから文字を取り出して文字列を連結します。この方法の欠点は、同じ文字が繰り返し取得されないことです。

ソースプリントを表示しますか?

リーリー

方法 4:

このメソッドは、この記事が Blue Ideal によって転載された後にネットユーザーによって提供された新しいメソッドです。md5() 関数の戻り値のため、生成されるパスワードには文字と文字のみが含まれます。数字ですが、それも良い方法です。アルゴリズム的思考:

1. time() は現在の Unix タイムスタンプを取得します

2. 最初のステップで取得したタイムスタンプを md5() で暗号化します

3. 2 番目のステップの暗号化結果から n 桁を傍受して、目的のパスワードを取得します

ソースプリントを表示しますか?

リーリー

時間効率の比較

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

ソースプリントを表示しますか?

リーリー

最終結果は次のとおりです:

方法 1: 9.8943710327148E-5 秒

方法 2: 9.6797943115234E-5 秒

方法 3: 0.00017499923706055 秒

方法 4: 3.4093856811523E-5 秒

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



http://www.bkjia.com/PHPjc/994105.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/994105.html技術記事 PHP でランダムなパスワードを生成する 4 つの方法とパフォーマンスの比較 PHP を使用してアプリケーション、特に Web サイトのプログラムを開発すると、ランダムなパスワードを生成するためのユーザー登録や、ユーザーの再...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。