携帯に限らずシステム開発では一意のパスワードを生成する処理が必要な時があります。
今回はそのような時に便利なパスワードの生成クラスを公開します。
Zend Framework の拡張ライブラリとして使う事を想定していますが、単独でも十分使用可能です。
使用例
//パスワード生成クラス読み込み require_once 'My/Password.php'; //デフォルトは8桁のパスワードが生成されます $password = My_Password::getPassword(); var_dump($password); //『32桁、小文字英字のみ』のパスワード生成 $password = My_Password::getPassword(32, 'small'); var_dump($password);
出力結果は以下のようになります。
string(8) "txRC4hLX" string(32) "zcyhuypsvbjgrfiacxrfhwusuiuulllb"
説明
int $lenght
パスワードの桁数 (デフォルト 8桁 )
string $mode
文字列の種類を指定 (デフォルト 大小文字英数字 )
small – 小文字英字
large – 大文字英字
smallalnum – 小文字英数字
largealnum – 大文字英数字
num – 数字
alphabet 大小文字英字
alnum – 大小文字英数字
パスワード生成クラスMy_Passwordソース
class My_password { /** * ファイル名・ユニークID・パスワード生成 * * @param integer $length 文字列長 default:8 (1-256) * @param string $mode モード default:'alnum' * @return array */ public static function getPassword($length = 8, $mode = 'alnum') { if ($length < 1 || $length > 256) { return false; } $smallAlphabet = 'abcdefghijklmnopqrstuvwxyz'; $largeAlphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; $numeric = '0123456789'; switch ($mode) { // 小文字英字 case 'small': $chars = $smallAlphabet; break; // 大文字英字 case 'large': $chars = $largeAlphabet; break; // 小文字英数字 case 'smallalnum': $chars = $smallAlphabet . $numeric; break; // 大文字英数字 case 'largealnum': $chars = $largeAlphabet . $numeric; break; // 数字 case 'num': $chars = $numeric; break; // 大小文字英字 case 'alphabet': $chars = $smallAlphabet . $largeAlphabet; break; // 大小文字英数字 case 'alnum': default: $chars = $smallAlphabet . $largeAlphabet . $numeric; break; } $charsLength = strlen($chars); $password = ''; for ($i = 0; $i < $length; $i++) { $num = mt_rand(0, $charsLength - 1); $password .= $chars{$num}; } return $password; } }
また、PEARにも類似のライブラリがありますのでこちらもご参考下さい。
http://pear.php.net/package/Text_Password