PHPでパスワード生成ツールを作成

PHPでパスワード生成ツールを作成

PHPでパスワード生成ツールを作成しました。
そのソースを公開します。

パスワード生成ツールはこちらになります。

パスワード生成の関数

数字、英字大文字、英字小文字、記号からパスワードを生成する関数になります。
指定した文字を必ず入れるようにしています。
その他に、除外する文字を指定することも可能としています。
//===================================================
// パスワード生成
// 引 数 $mojisu 文字数
//     $suuji [0-9] (1=使う 0=使わない)
//     $oomoji [A-Z] (1=使う 0=使わない)
//     $komoji [a-z] (1=使う 0=使わない)
//     $kigou 記号 (1=使う 0=使わない)
//        $jogai_moji 除外文字
// 戻り値 パスワード文字列
//===================================================
function getPasswordString($mojisu, $suuji=1, $oomoji=1, $komoji=1, $kigou=1, $jogai_moji=""){
	
	//-----------------------------------
	// 使用する文字
	//-----------------------------------
	// 数字
	$moji_1 = "0123456789";
	
	// アルファベット大文字
	$moji_2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	
	// アルファベット小文字
	$moji_3 = "abcdefghijkLmnopqrstuvwxyz";
	
	// 記号
	$moji_4 = "!$%&()*+-/<=>?@[]{}";

	//-----------------------------------
	// 除外文字
	//-----------------------------------
	if($jogai_moji!=""){
		for($i=0; $i<mb_strlen($jogai_moji); $i++){
			$moji_1 = str_replace($jogai_moji[$i], "", $moji_1);
			$moji_2 = str_replace($jogai_moji[$i], "", $moji_2);
			$moji_3 = str_replace($jogai_moji[$i], "", $moji_3);
			$moji_4 = str_replace($jogai_moji[$i], "", $moji_4);
		}
	}

	//-----------------------------------
	// 使う文字列と文字の種類数を取得
	//-----------------------------------
	$char = "";
	$moji_syurui = 0;
	if($suuji==1){
		$char .= $moji_1;
		$moji_syurui++;
	}
	
	if($oomoji==1){
		$char .= $moji_2;
		$moji_syurui++;
	}
	
	if($komoji==1){
		$char .= $moji_3;
		$moji_syurui++;
	}
	
	if($kigou==1){
		$char .= $moji_4;
		$moji_syurui++;
	}
	
	//-----------------------------------
	// パスワードを生成
	//-----------------------------------
	$password = "";
	
	$kaku_mojisu = (int)($mojisu / $moji_syurui);
	
	$amari = $mojisu % $moji_syurui;
	
	if($suuji==1){
		for($i=0; $i<$kaku_mojisu; $i++){
			$password .= $moji_1[mt_rand(0, mb_strlen($moji_1)-1)];
		}
	}
	
	if($oomoji==1){
		for($i=0; $i<$kaku_mojisu; $i++){
			$password .= $moji_2[mt_rand(0, mb_strlen($moji_2)-1)];
		}
	}
	
	if($komoji==1){
		for($i=0; $i<$kaku_mojisu; $i++){
			$password .= $moji_3[mt_rand(0, mb_strlen($moji_3)-1)];
		}
	}
	
	if($kigou==1){
		for($i=0; $i<$kaku_mojisu; $i++){
			$password .= $moji_4[mt_rand(0, mb_strlen($moji_4)-1)];
		}
	}
	
	if($amari>0){
		$a_moji = "";
		for($i = 0; $i < $amari; $i++){
			$a_moji .= $char[mt_rand(0, mb_strlen($char)-1)];
		}
		$password = $password . $a_moji;
	}
	
	return str_shuffle($password);
}
任意の文字からパスワードを生成する関数になります。
とてもシンプルな作りです。
//===================================================
// パスワード生成  任意文字
// 引 数 $mojisu 文字数
//     $nini_moji 任意文字
// 戻り値 パスワード文字列
//===================================================
function getPasswordStringNini($mojisu, $nini_moji){
	
	$password = "";
	for($i=0; $i<$mojisu; $i++){
		$password .= $nini_moji[mt_rand(0, mb_strlen($nini_moji)-1)];
	}
	return $password;
}