PHP でパスワードを生成する
-
rand()
関数を使用してランダム配列インデックスを選択し、PHP でランダムパスワードを生成する -
PHP で
openssl_random_pseudo_bytes()
およびbin2hex()
関数を使用してランダムパスワードを生成する -
PHP で
substr()
およびstr_shuffle()
関数を使用して指定された英数字の文字列からランダムパスワードを生成する
rand()
関数を使用して PHP でランダムなパスワードを生成する方法を紹介します。この方法では、小文字と大文字のアルファベットと数字の組み合わせを使用してパスワードを作成します。rand()
関数は、パスワードの組み合わせを選択するために、配列インデックスであるランダムな整数を返します。
また、openssl_random_pseudo_bytes()
および bin2hex()
関数を使用して PHP でランダムパスワードを生成する別の方法を紹介します。
この記事では、substr()
関数と str_shuffle()
関数を使用して PHP でランダムなパスワードを生成する別の方法を示します。このメソッドは、プログラムで提供される英数字値を使用して、ランダムなパスワードを形成します。
rand()
関数を使用してランダム配列インデックスを選択し、PHP でランダムパスワードを生成する
rand()
関数を使用して、PHP でランダムパスワードを生成できます。rand()
関数は、指定されたパラメーターの範囲からランダムな整数を返します。この関数は、パラメーターとして 2つの整数値を取ります。パスワードを組み合わせることができるアルファベットと数字の文字列を定義できます。乱数は、ランダムなアルファベットまたは数字を選択するために配列にインデックスを付けます。rand()
関数をループして、必要な長さのパスワードを作成できます。
たとえば、変数 $comb
を作成し、すべての小文字と大文字のアルファベットと 0 から 10 までの数字を含む文字列を abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890
として格納します。array()
関数を使用して配列 $pass
を作成します。文字列 $comb
の長さを $combLen
変数に格納します。for
ループを作成し、ループを 8 回繰り返します。ループ内で、0
と $ commbLen
変数をパラメーターとして使用して rand()
関数を使用し、値を $n
変数に格納します。次に、$ commb [$ n]
を $pass
配列に割り当てます。ループの外側で、implode()
関数を使用して配列を文字列に変換します。
以下の例では、$comb
変数に格納されている組み合わせからランダムなパスワードを生成します。rand()
関数は、0 から文字列 $comb
の長さまでのランダムな整数を取得します。ランダムな整数は、組み合わせからランダムな英数字の値を取得するためのインデックスとして使用されます。ループは 8 回実行され、8つのランダムな英数字値を選択し、最後にランダムなパスワードを形成します。rand()
関数の詳細については、PHP マニュアルを確認してください。
サンプルコード:
# php 7.x
<?php
$comb = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
$pass = array();
$combLen = strlen($comb) - 1;
for ($i = 0; $i < 8; $i++) {
$n = rand(0, $combLen);
$pass[] = $comb[$n];
}
print(implode($pass));
?>
出力:
aPsQWlzh
PHP で openssl_random_pseudo_bytes()
および bin2hex()
関数を使用してランダムパスワードを生成する
openssl_random_pseudo_bytes()
関数を使用して、疑似ランダムなバイト文字列を生成できます。関数のパラメーターとして整数値を指定して、生成する必要のバイト数の長さを定義できます。bin2hex()
関数は、バイナリデータを 16 進表現に変換します。この関数を使用して、ランダムに生成されたバイト文字列を 16 進表現に変換し、パスワードを作成できます。このメソッドは、英数字の値で構成されるランダムパスワードを生成します。
たとえば、変数 $bytes
を作成し、それを関数 openssl_random_pseudo_bytes()
で割り当てます。関数のパラメーターとして 4
を指定します。別の変数 $pass
を作成し、それに関数 bin2hex()
を記述します。関数で $bytes
変数を指定します。echo
ステートメントを使用して $pass
変数を出力します。
以下の例では、openssl_random_pseudo_bytes()
関数の 4
は、ランダムに生成されるバイト数を示しています。bin2hex()
関数は、バイトを 16 進数に相当するものに変換します。ランダムに生成されたパスワードの長さは 8 です。これは、4 バイトの文字列を 16 進変換すると 8 になるためです。bin2hex()
関数の詳細については、PHP マニュアルを確認してください。
サンプルコード:
#php 7.x
<?php
$bytes = openssl_random_pseudo_bytes(4);
$pass = bin2hex($bytes);
echo $pass;
?>
出力:
ed203eef
PHP で substr()
および str_shuffle()
関数を使用して指定された英数字の文字列からランダムパスワードを生成する
str_shuffle()
メソッドを使用して、指定された文字列をランダムにシャッフルできます。この関数は、小文字と大文字のアルファベットの組み合わせの文字列を 0 から 9 までの数字とともにシャッフルします。したがって、考えられるすべての大文字小文字の 1つの順列を形成します。シャッフルされた文字列に対して substr()
関数を使用して、その文字の一部を選択できます。したがって、ランダムなパスワードを生成できます。
たとえば、変数 $comb
を作成し、その中に文字列値 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
を格納します。str_shuffle()
を使用して $ commb
変数をシャッフルし、$shfl
変数に格納します。次に、substr()
関数と $shfl
変数、0
、および 8
をパラメーターとして使用します。関数を $pwd
変数に格納し、変数を出力します。
以下の例では、最初の方法と同じ英数字のセットを使用しています。ランダムに生成されたパスワードは、これらの英数字の値から形成されます。str_shuffle()
関数は英数字値をシャッフルし、ランダム順列を作成します。substr()
関数で 0
と 8
を使用して、シャッフルされた順列の最初のインデックスから 8 文字を選択しました。したがって、8 桁のランダムパスワードを生成します。
コード例:
#php 7.x
<?php
$comb = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$shfl = str_shuffle($comb);
$pwd = substr($shfl,0,8);
echo $pwd;
?>
出力:
jenZq3lY
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn